ページに 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
の プロパティ
DataGrid
をDataSource
、適切なデータ ソースをポイントするように設定します。 例:DataGrid1.DataSource = dataSet11.Tables("Authors")
DataGrid1.DataSource = dataSet11.Tables["Authors"] ;
注:
プログラムによってデータ ソースからデータを取得する場合は、 の プロパティ
DataGrid
にデータ ソースをDataSource
割り当てます。デザイナーを使用して Web フォームに を
DataAdapter
追加し、データセットを生成する場合は、プロパティ ページをDataGrid
開き、プロパティで適切なDataSet
オブジェクトまたはDataView
オブジェクトをDataSource
選択します。コントロールの
DataBind
DataGrid
メソッドまたは Page オブジェクトのDataBind
メソッドを呼び出します。 例:'Use one of the following lines. 'Page.DataBind() DataGrid1.DataBind()
//Use one of the following lines. //Page.DataBind(); DataGrid1.DataBind();
原因の解決策 2
データ ソースにデータが含まれていることと、クエリによってデータが返されることを確認します。
を
DataAdapter
使用してデータセットを塗りつぶします。 例:sqlDataAdapter1.Fill(dataSet11, "Authors")
sqlDataAdapter1.Fill(dataSet11,"Authors");
状態
この動作は仕様です。
詳細
の プロパティDataGrid
をDataGrid
使用して Web サーバー コントロールをDataSource
データ ソースにバインドして、ページ上のデータ グリッドを正しくレンダリングします。 データ ソースを設定した後、コントロールのメソッドまたはDataBind
オブジェクトのメソッドPage
をDataGrid
コードから明示的に呼び出すDataBind
必要もあります。
動作を再現する手順 - データ グリッドが表示されない
Visual Basic .NET または Visual C# .NET で新しい ASP.NET Web アプリケーション プロジェクトを作成します。
ツールボックスからコントロールを
DataGrid
ドラッグし、コントロールをフォームにドロップします。デザイナーで、.aspx ページをダブルクリックして分離コード ウィンドウを開きます。 次のコードを分離コード ウィンドウの上部に追加して、必要な名前空間参照を追加します。
Imports System.Data Imports System.Data.SqlClient
using System.Data.SqlClient;
イベントのコードを
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(); }
環境に応じて接続文字列を変更します。
プロジェクトをビルドし、ブラウザーで.aspx ページを表示します。 データ グリッドが表示されないことに注意してください。
動作を再現する手順 - データ グリッド ヘッダーが表示されますが、データ グリッドは空です
Visual Basic .NET または Visual C# .NET で新しい ASP.NET Web アプリケーション プロジェクトを作成します。
ツールボックスからコントロールを
DataGrid
ドラッグし、コントロールをフォームにドロップします。コントロールを
SqlDataAdapter
Web フォームに追加します。 DataAdapter 構成ウィザードで次の手順を実行して、接続プロパティを設定します。[新しい接続] を選択して、SQL Server データベースへの新しい接続を作成します。 サーバーを選択し、ログオン情報を入力し、 Pubs データベースを選択します。
[ クエリの種類] で [ SQL ステートメント] を選択し、[ 次へ] を選択します。
次の SQL ステートメントを入力します。
Select * From Authors
[完了] を選択します。
DataAdapter を右クリックし、[データセットの生成] を選択します。
のプロパティ
DataGrid
をDataSource
、生成されるデータセットに設定します。デザイナーで、.aspx ページをダブルクリックして分離コード ウィンドウを開きます。 イベントに次のコードを
Page_Load
追加します。DataGrid1.DataBind()
DataGrid1.DataBind();
プロジェクトをビルドし、ブラウザーで.aspx ページを表示します。
注:
データ グリッドのヘッダーが表示されますが、データ グリッドにはデータが含まれていません。
関連情報
コントロールの詳細と、このコントロールを DataGrid
使用するサンプルについては、「 DataGrid クラス」を参照してください。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示