Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.NET页面生命周期:事件处理程序是否在控件数据绑定事件之前运行?_Asp.net_.net_Gridview_Data Binding_Web - Fatal编程技术网

Asp.NET页面生命周期:事件处理程序是否在控件数据绑定事件之前运行?

Asp.NET页面生命周期:事件处理程序是否在控件数据绑定事件之前运行?,asp.net,.net,gridview,data-binding,web,Asp.net,.net,Gridview,Data Binding,Web,我试图利用Asp.NET中的页面生命周期,这样我就不会绑定到超出实际需要的数据源 这导致了以下问题。我的页面上有一个ObjectDataSource、GridView和一个按钮。该按钮向数据库添加一条记录,该记录应由数据源提取并显示在网格上。问题是,在我刷新页面之前,该项不会显示在gridview上 我可以通过在按钮的事件处理程序中调用GridView.DataBind()来解决这个问题,但这与我对.NET页面生命周期的理解背道而驰 基于此,生命周期应如下所示: 此外,本文还指出,数据绑定事件

我试图利用Asp.NET中的页面生命周期,这样我就不会绑定到超出实际需要的数据源

这导致了以下问题。我的页面上有一个ObjectDataSource、GridView和一个按钮。该按钮向数据库添加一条记录,该记录应由数据源提取并显示在网格上。问题是,在我刷新页面之前,该项不会显示在gridview上

我可以通过在按钮的事件处理程序中调用GridView.DataBind()来解决这个问题,但这与我对.NET页面生命周期的理解背道而驰

基于此,生命周期应如下所示:

此外,本文还指出,数据绑定事件是“在控件的PreRender事件之后引发的,该事件发生在页面的PreRender事件之后。”

因此,在事件处理阶段,我的按钮单击事件应该首先触发。它应该将记录添加到数据库中。 应在控件上调用下一个PreRender。 最后,应该在控件上调用DataBind,网格应该更新以捕获新记录


然而,这似乎没有发生。我不明白什么?

我认为问题在于GridView上没有启用viewstate。这就是我所经历的,但是如果请求是回发,那么我还必须从page PreRender事件调用GridView上的DataBind(),以便在回发时在GridView中更新数据

编辑: 如果您可以发布页面的源代码(aspx+codebehind),将有助于更好地理解问题和上下文。如何以及在何处将GridView连接到数据源?静态标记还是动态标记?是否调用page.DataBind()。。。这些因素可能会影响GridView的行为