关于页面加载:ASP.NET 无法访问内联编码在页面加载中创建的数据表

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 的人推荐它。

我还建议您花一些时间熟悉 ASP.Net 页面生命周期。


是的,页面加载是在所有服务器控件都加载到内存后执行的,但是如果要使用数据表,则必须确保在每次刷新时重新填充数据表。

我认为您的问题表明您绑定到页面的方式存在一些更深层次的问题。

你能发布一些代码吗?