2

aspx ページ内にユーザー コントロールがあります。ユーザーコントロールで、グリッドビューをデータテーブルにバインドします。このことは、ページのリロード時に nullreference 例外をスローします。グリッドビュー オブジェクトが null です。どこにも助けが見つかりませんでした。

ユーザー コントロールの cs ページのコードは次のとおりです。

If(!IsPostBack)
{

DataTable dt = GetDataTable();
JobListGrid.DataSource = dt;   //This throws error cause the joblistgrid is null
JobListGrid.DataBind();   

}

aspx コード:

<asp:GridView ID="JobListGrid" runat="server">
            <Columns></Columns>
            </asp:GridView>

何か不足していますか?助けてください。

4

2 に答える 2

1

MSDN から:

http://msdn.microsoft.com/en-us/library/ms178472.aspx

「Page オブジェクトは Page オブジェクトで OnLoad メソッドを呼び出し、ページとすべてのコントロールが読み込まれるまで、各子コントロールに対して同じことを再帰的に実行します。個々のコントロールの Load イベントは、ページの Load イベントの後に発生します。OnLoad を使用します。コントロールにプロパティを設定し、データベース接続を確立するためのイベント メソッド。」

ページのロードではなくコントロールのロードを使用しない限り、コントロールが既にロードされていることが保証されないため、これはそのバインディングに必要な場所ではありません。

代わりに PreRender イベントを試してください。

ここに画像の説明を入力

于 2013-03-29T04:58:17.857 に答える
0

これを試してみてください。グリッドにバインドされた列にデータ フィールド名が必要になる場合があります。

<asp:DataGrid><Columns><asp:BoundColumn DataField="YourDatabaseColumnName"></asp:BoundColumn></Columns></asp:DataGrid>
于 2013-03-29T04:28:41.897 に答える