我正在尝试利用Asp.NET中的页面生命周期,这样我就不会比实际需要更多地绑定到我的数据源。
这导致了以下问题。我的页面上有一个ObjectDataSource,GridView和一个按钮。该按钮向数据库添加一条记录,该记录应由数据源拾取并显示在网格上。问题是,在刷新页面之前,该项目未显示在gridview上。
我可以通过在我的按钮的事件处理程序中调用GridView.DataBind()来解决这个问题,但这违背了我对.NET页面生命周期的理解。
基于此article,生命周期应如下所示:
此外,文章指出数据绑定事件是“在控件的PreRender事件之后引发的,该事件发生在页面的PreRender事件之后。”
因此,在事件处理阶段,我的按钮点击事件应首先触发。它应该添加数据库的记录。 应该在控件上调用下一个PreRender。 最后,应该在控件上调用DataBind,Grid应该更新以捕获新记录。
然而,这似乎并未发生。我不理解的是什么?
答案 0 :(得分:1)
我认为问题是您的视图状态未在GridView上启用。这是我所经历的,但是如果请求是回发以在回发中更新GridView中的数据,那么我还必须从PreRender页面事件调用GridView上的DataBind()。
修改强> 如果您可以发布页面的源代码(aspx + codebehind),将有助于更好地理解问题和上下文。如何以及在何处将GridView连接到数据源?静态标记还是动态?你对page.DataBind()进行任何调用吗? ......这些事情可能会影响GridView的行为。