0

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

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

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

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

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

4

3 回答 3

1

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

于 2010-08-19T13:51:27.393 回答
0

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

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

于 2010-08-19T17:35:55.673 回答
0

有人在 asp.net 论坛上回答了它。链接在这里

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

于 2010-08-20T12:26:11.743 回答