在我的Page_Load代码隐藏文件事件中,我将数据加载到datatable中。在我的.aspx页面中,我有一些内联编码,我想显示来自此数据表的一些数据。但是当我运行程序时,它显示错误,如“错误64使用未分配的局部变量'dtblChild'” dtblChild是我的DataTable对象
加载表单元素后,是否在代码隐藏中执行Page_Load?
答案 0 :(得分:1)
内联代码在渲染阶段执行。
在页面的lifecycle中,Render的发生时间远远晚于Load
答案 1 :(得分:0)
是的,页面加载在所有服务器控件加载到内存后执行,但是如果要使用它,则必须确保在每次刷新时重新填充数据表。
我认为您的问题表明您绑定到网页的方式存在一些更深层次的问题。
你可以发布一些代码吗?
答案 2 :(得分:0)
尝试使用转发器控件或datagridview而不是<% %>
蜜蜂蜇。太多内联代码与代码隐藏文件不能很好地混合:您可以获得意想不到的结果。它可以工作,如果你真的知道你在做什么,但你必须小心,我不会推荐给ASP.Net新手。
我还建议您花点时间熟悉ASP.Net Page Lifecycle。
答案 3 :(得分:0)
&LT; / TR&GT; &LT;% foreach(dtblChild.Rows中的DataRow博士) { %GT; &LT; TR&GT;&LT; TD&GT; Thissss&LT; / TD&GT;&LT; / TR&GT; &LT;%
}
%GT;
在Page_Load后面的代码中,我将Data填充到DataTable对象(dtblChild)
答案 4 :(得分:0)
更多的“ASP.Net-ish”方法是这样的:
<asp:Repeater ID="MyRepeater" runat="server" DataSource="dtblChild">
<ItemTemplate>
<tr><td>Thisss</td></tr>
</ItemTemplate>
</asp:Repeater>
您可能还需要声明一个ObjectDatasource来包装数据表,以使其与转发器兼容。
答案 5 :(得分:0)
如上所述,将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();
}