【问题标题】:Asp.net postback oninitAsp.net 回发 oninit
【发布时间】:2010-08-19 12:53:34
【问题描述】:

我有一个带有一个 TemplateField 的网格,它是一个复选框,并说 2 个绑定字段。

在回发时的 Page_Load 中,我使用存储在会话中的缓存数据集重新绑定网格。如果用户在网格上选中复选框,则在回发时我可以在网格上迭代并获取那些选中的值,一切正常。

如果我将回发时的网格绑定代码移动到 OnInit 而不是 Page_Load,那么我会丢失那些用户选中的复选框数据。为什么?回发数据是否应该在 oninit 之后不覆盖在网格顶部?

它确实适用于 page_load,我假设当我重新绑定网格时,我将我的数据覆盖在具有回发数据的网格上,因为未绑定复选框列我不会覆盖回发数据。

注意:视图状态在我的网格上被禁用,我在每次回发时绑定数据(存储在会话中)。还有一些奇怪的事情,当我使用 OnInit 时,在每次回发时,我都会得到网格的第一页,无论回发是哪个页面被触发。 谢谢。

【问题讨论】:

    标签: asp.net postback pageload


    【解决方案1】:

    我相信这是因为视图状态尚未在 OnInit 事件中加载。查看 http://msdn.microsoft.com/en-us/library/ms178472.aspx 了解更多关于 asp.net 页面生命周期的信息。希望对你有帮助!!

    【讨论】:

    • ViewState 在我的网格上被禁用,这就是我在每次回发时绑定存储在会话中的数据的原因。
    • 赞成引用 ASP.NET 生命周期 - 非常有用的页面。
    【解决方案2】:

    与 LoadViewState 类似,ProcessPostData 发生在 OnInit 之后,但在 Page_Load 之前。我假设复选框值作为 Post 数据发送回服务器。因此,我怀疑问题与启用 ViewState 时相同:OnInit 太早 - 发布的数据(复选框值)尚未应用于您的控件。

    我在视图状态禁用操作方面没有丰富的经验,所以如果这个答案遗漏了一些细微差别,我深表歉意。

    【讨论】:

    • 我同意你的观点,OnInit 没有 postdata,这没关系。我在 OnPageIndexChanging 上的网格上进行迭代,我期望 postdata 但没有得到。仅仅因为我在 OnInit 中绑定了网格会改变行为。我想了解 Page_Load Vs OnInit 上的绑定网格之间的区别。我缺少一些东西。
    • 在 OnInit 中重新绑定网格可能会使 ProcessPostData 无法使用复选框值覆盖正确的数据元素。但这是我的猜测——我并不乐观。抱歉 - 我认为我缺乏无视图控件的经验,这让我很难提供帮助。 :-/
    【解决方案3】:

    有人在asp.net 论坛上回答了这个问题。这是链接

    http://forums.asp.net/p/1592192/4036031.aspx#4036031

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 2016-12-13
      • 2018-11-27
      • 1970-01-01
      • 2018-06-18
      • 2011-02-18
      相关资源
      最近更新 更多