【问题标题】:GridView called from a user control is null on page reload从用户控件调用的 GridView 在页面重新加载时为空
【发布时间】:2013-03-29 04:04:07
【问题描述】:

我在 aspx 页面中有一个用户控件。在用户控件中,我将 gridview 与数据表绑定。这个东西在页面重新加载时抛出 nullreference 异常。 gridview 对象为空。我在任何地方都找不到帮助。

用户控件的cs页面代码为:

If(!IsPostBack)
{

DataTable dt = GetDataTable();
JobListGrid.DataSource = dt;   //This throws error cause the joblistgrid is null
JobListGrid.DataBind();   

}

aspx代码:

<asp:GridView ID="JobListGrid" runat="server">
            <Columns></Columns>
            </asp:GridView>

我错过了什么吗?请帮忙。

【问题讨论】:

  • 你的cs代码在哪个事件中?

标签: c# asp.net gridview user-controls


【解决方案1】:

来自 MSDN:

http://msdn.microsoft.com/en-us/library/ms178472.aspx

“Page对象调用Page对象的OnLoad方法,然后递归地对每个子控件执行相同的操作,直到页面和所有控件都加载完毕。各个控件的Load事件发生在页面的Load事件之后。 使用 OnLoad 事件方法在控件中设置属性并建立数据库连接。"

这不是您想要绑定的地方,因为您不能保证控件已经加载,除非您使用控件的负载而不是页面的负载。

尝试使用 PreRender 事件。

【讨论】:

    【解决方案2】:

    试试这个,你的网格绑定列中可能需要数据字段名称。

    <asp:DataGrid><Columns><asp:BoundColumn DataField="YourDatabaseColumnName"></asp:BoundColumn></Columns></asp:DataGrid>
    

    【讨论】:

    • 列名是动态创建的。我无法将其绑定到设计器
    • 您是否将 AutoGenerateColumns 设置为 false ?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 2015-03-11
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多