最近遇到一个奇怪的事情,在repeater中选择复选框后,翻到下一页(自己做的分页,我做的是页面回发,不是重定向),复选框状态保存,调试发现,不仅复选框如此,其中HiddenFiled隐藏域也是先前一个页面的值。再调试,发现Repeater在执行Onload,OnDataBind,OnItemBound之后,Repeater的绑定是正确的,然而在执行完OnItemBound之后,执行页面中的全选(按钮)事件中,Repeater中的值被还原成头一次的(我很纳闷的是,在OnItemBound 与页面全选(按钮)事件中是否发生其他事件?调试过程未发现。)。继续调试下去,发现在Repeater render阶段,对应的复选框和隐藏域已经变成先前的了。更让人费解的是,其他控件都没问题,如 Literal,LinkButton等,它们绑定的数据是新值。
我不太确定是不是因为页面回发,保持状态引起的。请各位高手帮忙分析一下。
第一个问题:Repeater的生命周期及其执行顺序
第二个问题:Repeater 中嵌套的控件在什么阶段进行回发,即把对应ViewState中的值写回控件?
我不太确定是不是因为页面回发,保持状态引起的。请各位高手帮忙分析一下。
第一个问题:Repeater的生命周期及其执行顺序
第二个问题:Repeater 中嵌套的控件在什么阶段进行回发,即把对应ViewState中的值写回控件?
我跟你一样也是封装了repeater控件,用作分页,我估计大家的这种思想应该原子Petshop的例子吧,不过petshop中的repeater分页相对简单,做的只是简单页面跳转。我想在这个层次上进一步提高,我改写了repeater模板,通过自定义模板列和XML文件配置,来达到简化代码,同时方便维护。
我的问题其实很简单,就是要弄清楚Repeater生命周期的几个过程。你若封装过repeater,应该很了解,还请不吝赐教,谢谢。