【问题标题】:Asp.NET Page Lifecyle: do Event Handlers run before control Databinding events?Asp.NET 页面生命周期:事件处理程序是否在控制数据绑定事件之前运行?
【发布时间】:2014-07-30 08:07:36
【问题描述】:

我正在尝试利用 Asp.NET 中的页面生命周期,这样我绑定到数据源的次数不会超过我实际需要的次数。

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

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

基于这个article,生命周期应该如下:

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

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

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

【问题讨论】:

    标签: asp.net .net gridview data-binding web


    【解决方案1】:

    我认为问题在于您的 GridView 上未启用您的视图状态。这就是我所经历的,但是如果请求是回发,那么我还必须从页面 PreRender 事件调用 GridView 上的 DataBind() 以在回发时更新 GridView 中的数据。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      • 2020-07-09
      • 1970-01-01
      • 2016-11-05
      • 2010-10-15
      • 2015-06-19
      • 2011-12-01
      相关资源
      最近更新 更多