在页面重新加载时,从用户控件调用的GridView为null

时间:2013-03-29 04:04:08

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

我在aspx页面中有一个usercontrol。在usercontrol中,我将gridview与数据表绑定在一起。这个东西在页面重新加载时抛出nullreference异常。 gridview对象为null。我无处可寻。

用户控件的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>

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

2 个答案:

答案 0 :(得分:1)

来自MSDN:

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

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

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

尝试使用PreRender事件。

enter image description here

答案 1 :(得分:0)

试试这个,您可能需要在网格绑定列中使用数据字段名称。

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