ページに DataGrid コントロールが正しく表示されない.aspx

この記事は、DataGrid コントロールを含む.aspx ページを表示するときにデータ グリッドが表示されない可能性がある問題を解決するのに役立ちます。 この記事では、Microsoft .NET Framework クラス ライブラリ名前空間 を参照しますSystem.Data.SqlClient

元の製品バージョン: ASP.NET
元の KB 番号: 313156

現象

コントロールを含む.aspx ページを DataGrid 表示すると、データ グリッドが表示されないことがあります。 または、データ グリッドのヘッダーのみが表示されますが、データ グリッドにデータが含まれていない場合があります。

原因 1: データ グリッドが表示されない

次の場合、データ グリッドはまったく表示されません。

  • コントロールの DataGrid プロパティはDataSource設定しません。 または

  • コードからコントロールのDataGridメソッドやオブジェクトのDataBindメソッドをPage呼び出DataBindしません。

原因 2: データ グリッド ヘッダーが表示されますが、データ グリッドが空です

データ グリッド ヘッダーが表示されますが、次の場合、データ グリッドにはデータが含まれません。

  • データ ソースにデータが含まれていません。 または

  • にバインドされているデータセットは、実行時に DataGrid データで埋められません。

    注:

    は、実行時に データベースからのデータが入力されるように DataGrid 、データセットを明示的に埋めるコードを記述する必要があります。 これを行うには、デザイナーを使用して DataAdapter オブジェクトを追加し、デザイン時にデータセットを生成します。

この問題は、.aspx ページが DataSetName.xsd ファイルからヘッダー フィールドの詳細を取得するためです。 DataSetName.xsd ファイルは、デザイン時にデータセットを生成するときに、データセットごとに作成されます。 このファイルには、データセットの拡張マークアップ言語 (XML) 表現が含まれています。 [.aspx] ページでは、このファイルからヘッダー フィールドの詳細を取得します。 そのため、データ グリッド ヘッダーは表示されますが、データ グリッドは空です。

原因の解決策 1

  1. の プロパティDataGridDataSource、適切なデータ ソースをポイントするように設定します。 例:

    DataGrid1.DataSource = dataSet11.Tables("Authors")
    
    DataGrid1.DataSource = dataSet11.Tables["Authors"] ;
    

    注:

    プログラムによってデータ ソースからデータを取得する場合は、 の プロパティDataGridにデータ ソースをDataSource割り当てます。

  2. デザイナーを使用して Web フォームに を DataAdapter 追加し、データセットを生成する場合は、プロパティ ページを DataGrid 開き、プロパティで適切な DataSet オブジェクトまたは DataView オブジェクトを DataSource 選択します。

  3. コントロールの DataBindDataGrid メソッドまたは Page オブジェクトの DataBind メソッドを呼び出します。 例:

    'Use one of the following lines.
    'Page.DataBind()
    DataGrid1.DataBind()
    
    //Use one of the following lines.
    //Page.DataBind();
    DataGrid1.DataBind();
    

原因の解決策 2

  1. データ ソースにデータが含まれていることと、クエリによってデータが返されることを確認します。

  2. DataAdapter 使用してデータセットを塗りつぶします。 例:

    sqlDataAdapter1.Fill(dataSet11, "Authors")
    
    sqlDataAdapter1.Fill(dataSet11,"Authors");
    
    

状態

この動作は仕様です。

詳細

の プロパティDataGridDataGrid使用して Web サーバー コントロールをDataSourceデータ ソースにバインドして、ページ上のデータ グリッドを正しくレンダリングします。 データ ソースを設定した後、コントロールのメソッドまたはDataBindオブジェクトのメソッドPageDataGridコードから明示的に呼び出すDataBind必要もあります。

動作を再現する手順 - データ グリッドが表示されない

  1. Visual Basic .NET または Visual C# .NET で新しい ASP.NET Web アプリケーション プロジェクトを作成します。

  2. ツールボックスからコントロールを DataGrid ドラッグし、コントロールをフォームにドロップします。

  3. デザイナーで、.aspx ページをダブルクリックして分離コード ウィンドウを開きます。 次のコードを分離コード ウィンドウの上部に追加して、必要な名前空間参照を追加します。

    Imports System.Data
    Imports System.Data.SqlClient
    
    using System.Data.SqlClient;
    
  4. イベントのコードを Form_Load 次のコードに置き換えます。

    注:

    このコードを実行する前に、 と pwd = <strong password> を正しい値に変更uid = <username>する必要があります。 UID に、データベースでこの操作を実行するための適切なアクセス許可があることを確認します。

    Private Sub Page_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
         'Write code to access the database.
         Dim myConnection As New SqlConnection("server=(local);database=pubs;uid=<username>;pwd=<strong password>")
         Dim myDataAdapter As New SqlDataAdapter("select * from authors", myConnection)
         Dim myDataSet As New DataSet()
         myConnection.Open()
         myDataAdapter.Fill(myDataSet)'Uncomment the following line to resolve this problem.
         'DataGrid1.DataSource = myDataSet
         DataGrid1.DataBind()
    End Sub
    
    private void Page_Load(object sender, System.EventArgs e)
    {
        //Write code to access the database.
        SqlConnection myConnection = new SqlConnection("server=(local);database=pubs;uid=<username>;pwd=<strong password>");
        SqlDataAdapter myDataAdapter = new SqlDataAdapter("select * from authors", myConnection);
        DataSet myDataSet = new DataSet();
        myConnection.Open();
        myDataAdapter.Fill(myDataSet);
    
        //Uncomment the following line to resolve this problem.
        //DataGrid1.DataSource = myDataSet;
        DataGrid1.DataBind();
    }
    
  5. 環境に応じて接続文字列を変更します。

  6. プロジェクトをビルドし、ブラウザーで.aspx ページを表示します。 データ グリッドが表示されないことに注意してください。

動作を再現する手順 - データ グリッド ヘッダーが表示されますが、データ グリッドは空です

  1. Visual Basic .NET または Visual C# .NET で新しい ASP.NET Web アプリケーション プロジェクトを作成します。

  2. ツールボックスからコントロールを DataGrid ドラッグし、コントロールをフォームにドロップします。

  3. コントロールを SqlDataAdapter Web フォームに追加します。 DataAdapter 構成ウィザードで次の手順を実行して、接続プロパティを設定します。

    1. [新しい接続] を選択して、SQL Server データベースへの新しい接続を作成します。 サーバーを選択し、ログオン情報を入力し、 Pubs データベースを選択します。

    2. [ クエリの種類] で [ SQL ステートメント] を選択し、[ 次へ] を選択します。

    3. 次の SQL ステートメントを入力します。

      Select * From Authors
      
    4. [完了] を選択します。

  4. DataAdapter を右クリックし、[データセットの生成] を選択します。

  5. のプロパティDataGridDataSource、生成されるデータセットに設定します。

  6. デザイナーで、.aspx ページをダブルクリックして分離コード ウィンドウを開きます。 イベントに次のコードを Page_Load 追加します。

    DataGrid1.DataBind()
    
    DataGrid1.DataBind();
    
  7. プロジェクトをビルドし、ブラウザーで.aspx ページを表示します。

    注:

    データ グリッドのヘッダーが表示されますが、データ グリッドにはデータが含まれていません。

関連情報

コントロールの詳細と、このコントロールを DataGrid 使用するサンプルについては、「 DataGrid クラス」を参照してください。