我有一个带有一个TemplateField的网格,它是一个复选框,并说2个绑定字段。
在回页的Page_Load中,我使用存储在会话中的缓存数据集重新绑定网格。如果用户在网格上选中复选框,则在回发时我可以在网格上迭代并获取那些选中的值,一切正常。
如果我将回发上的网格绑定代码移动到OnInit而不是Page_Load,那么我将松开那些用户选中的复选框数据。为什么? oninit后回发数据是否应该叠加在网格顶部?
它确实与page_load一起使用,我假设当我重新绑定网格时,我将我的数据覆盖在具有回发数据的网格上,因为复选框列没有绑定我不会覆盖回发数据。
注意:我的网格上禁用了viewstate,我在每个回发上绑定数据(存储在会话中)。还有一些奇怪的,当我使用OnInit时,每次回发都会得到网格的第一页,无论回发被触发到哪一页。 感谢。
答案 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论坛上回答了这个问题。这是链接