0

在代码隐藏文件的 Page_Load 事件中,我正在将数据加载到数据表中。在我的 .aspx 页面中,我有一些内联编码,我想显示这个数据表中的一些数据。但是当我运行程序时,它显示像“错误 64 使用未分配的局部变量 'dtblChild'”这样的错误 dtblChild 是我的 DataTable 对象

代码隐藏中的 Page_Load 是否在加载表单元素后执行?

4

6 回答 6

1

内联代码在渲染阶段执行。

在页面的生命周期中,渲染发生的时间比加载晚得多

于 2008-10-28T14:23:15.590 回答
0

更“ASP.Net-ish”的方式是这样的:

<asp:Repeater ID="MyRepeater" runat="server" DataSource="dtblChild">
    <ItemTemplate>
        <tr><td>Thisss</td></tr>
    </ItemTemplate>
</asp:Repeater>

您可能还需要声明一个 ObjectDatasource 来包装您的数据表,以使其与中继器兼容。

于 2008-10-28T14:02:18.610 回答
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>

函数加载数据(){

rptSearchResults.DataSource = dtblChild;

rptSearchResults.DataBind();

}

于 2008-10-28T14:08:12.123 回答
0

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

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

你能发布一些代码吗?

于 2008-10-28T13:49:16.953 回答
0

尝试为此使用中继器控件或 datagridview 而不是<% %>蜜蜂蜇伤。太多的内联代码不能很好地与文件后面的代码混合:你会得到意想不到的结果。如果您真的知道自己在做什么,它可以工作,但您必须小心,我不会向任何刚接触 ASP.Net 的人推荐它。

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

于 2008-10-28T13:49:35.407 回答
0

这是我的内联编码

</tr> <% foreach (dtblChild.Rows 中的DataRow dr) { %> <tr><td>Thissss</td></tr> <%

  }

%>

在 Page_Load 后面的代码中,我将数据填充到 DataTable 对象(dtblChild)

于 2008-10-28T13:55:03.463 回答