Asp.net回发oninit

时间:2010-08-19 12:53:35

标签: asp.net postback pageload

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

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

如果我将回发上的网格绑定代码移动到OnInit而不是Page_Load,那么我将松开那些用户选中的复选框数据。为什么? oninit后回发数据是否应该叠加在网格顶部?

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

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

我对viewstate-disabled操作没有丰富的经验,所以如果这个答案缺少一些细微差别我很抱歉。

答案 2 :(得分:0)

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

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