在代码隐藏文件的 Page_Load 事件中,我正在将数据加载到数据表中。在我的 .aspx 页面中,我有一些内联编码,我想显示这个数据表中的一些数据。但是当我运行程序时,它显示像“错误 64 使用未分配的局部变量 'dtblChild'”这样的错误 dtblChild 是我的 DataTable 对象
代码隐藏中的 Page_Load 是否在加载表单元素后执行?
在代码隐藏文件的 Page_Load 事件中,我正在将数据加载到数据表中。在我的 .aspx 页面中,我有一些内联编码,我想显示这个数据表中的一些数据。但是当我运行程序时,它显示像“错误 64 使用未分配的局部变量 'dtblChild'”这样的错误 dtblChild 是我的 DataTable 对象
代码隐藏中的 Page_Load 是否在加载表单元素后执行?
内联代码在渲染阶段执行。
在页面的生命周期中,渲染发生的时间比加载晚得多
更“ASP.Net-ish”的方式是这样的:
<asp:Repeater ID="MyRepeater" runat="server" DataSource="dtblChild">
<ItemTemplate>
<tr><td>Thisss</td></tr>
</ItemTemplate>
</asp:Repeater>
您可能还需要声明一个 ObjectDatasource 来包装您的数据表,以使其与中继器兼容。
如上所述,将您的 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>
函数加载数据(){
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)