ASP.NET cant access datatable created in Page load from inline coding
在代码隐藏文件的 Page_Load 事件中,我正在将数据加载到数据表中。在我的 .aspx 页面中,我有一些内联编码,我想显示这个数据表中的一些数据。但是当我运行程序时,它显示错误,如"错误 64 使用未分配的局部变量 \\'dtblChild\\' "
dtblChild 是我的 DataTable 对象
代码隐藏中的 Page_Load 是否在加载表单元素后执行?
内联代码在渲染阶段执行。
在页面的生命周期中,渲染发生的时间要比加载晚得多
如上所述,将您的 dtblChild 绑定到转发器(或 DataGrid)。它会更容易维护。然后在单独的函数中填充 DataTable 并将其绑定到转发器。需要时在 Page_Load 中调用该函数。
1 2 3 4 5 6 7 8 9 | <table> <ItemTemplate> <tr> <td><%#DataBinder.Eval(Container.DataItem,"ColumnName") %></td> </tr> </ItemTemplate> </asp:Repeater> </table> |
函数加载数据()
{
rptSearchResults.DataSource = dtblChild;
rptSearchResults.DataBind();
}
更多的"ASP.Net-ish"方法是这样的:
1 2 3 4 | <ItemTemplate> <tr><td>Thisss</td></tr> </ItemTemplate> </asp:Repeater> |
您可能还需要声明一个 ObjectDatasource 来package您的数据表以使其与中继器兼容。
这是我的内联编码
<% foreach(dtblChild.Rows 中的 DataRow dr) { %>
<%
1 | } |
%>
在 Page_Load 后面的代码中,我将数据填充到 DataTable 对象 (dtblChild)
为此尝试使用中继器控件或 datagridview 而不是
我还建议您花一些时间熟悉 ASP.Net 页面生命周期。
是的,页面加载是在所有服务器控件都加载到内存后执行的,但是如果要使用数据表,则必须确保在每次刷新时重新填充数据表。
我认为您的问题表明您绑定到页面的方式存在一些更深层次的问题。
你能发布一些代码吗?