codebehindファイルのPage_Loadイベントで、データをデータテーブルに読み込んでいます.aspxページでインラインコーディングを行っていますが、このデータテーブルのデータを表示したいのですが、プログラムを実行しているときに表示されます「エラー64未割り当てのローカル変数'dtblChild'の使用」のようなエラーdtblChildは私のDataTableオブジェクトです
コードビハインドのPage_Loadは、フォーム要素を読み込んだ後に実行されますか?
codebehindファイルのPage_Loadイベントで、データをデータテーブルに読み込んでいます.aspxページでインラインコーディングを行っていますが、このデータテーブルのデータを表示したいのですが、プログラムを実行しているときに表示されます「エラー64未割り当てのローカル変数'dtblChild'の使用」のようなエラーdtblChildは私のDataTableオブジェクトです
コードビハインドのPage_Loadは、フォーム要素を読み込んだ後に実行されますか?
インライン コードは、レンダリング段階で実行されます。
ページのライフサイクルでは、Render は Load よりもかなり遅れて発生します。
上記のように、dtblChildをリピーター(またはDataGrid)にバインドします。メンテナンスが簡単になります。次に、DataTableを別の関数に入力し、リピーターにバインドします。必要に応じて、Page_Loadでその関数を呼び出します。
<table>
<asp:Repeater ID="rptSearchResults" runat="server">
<ItemTemplate>
<tr>
<td><%#DataBinder.Eval(Container.DataItem, "ColumnName") %></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
関数LoadData(){
rptSearchResults.DataSource = dtblChild;
rptSearchResults.DataBind();
}
はい、ページの読み込みはすべてのサーバーコントロールがメモリに読み込まれた後に実行されますが、データテーブルを使用する場合は、更新のたびにデータテーブルが再入力されるようにする必要があります。
あなたの質問は、あなたがページにバインドする方法に関するいくつかのより深い問題を示していると思います。
コードを投稿できますか?
<% %>
これには、ハチ刺されではなく、リピーターコントロールまたはdatagridviewを使用してみてください。インラインコードが多すぎると、ファイルの背後にあるコードとうまく混ざりません。予期しない結果が生じる可能性があります。自分が何をしているのかを本当に理解していれば機能しますが、注意が必要であり、ASP.Netを初めて使用する人にはお勧めしません。
また、時間をかけてASP.Netページのライフサイクルに精通することをお勧めします。
</ tr> <%foreach(dtblChild.RowsのDataRow dr){%> <tr> <td> Thissss </ td> </ tr> <%
}
%>
Page_Loadの背後にある私のコードでは、DataTableオブジェクト(dtblChild)にデータを入力しています
これを行うためのより「ASP.Netっぽい」方法は次のとおりです。
<asp:Repeater ID="MyRepeater" runat="server" DataSource="dtblChild">
<ItemTemplate>
<tr><td>Thisss</td></tr>
</ItemTemplate>
</asp:Repeater>
リピーターと互換性を持たせるために、データテーブルをラップするために ObjectDatasource を宣言する必要があるかもしれません。