前几天写了个弹出层,显示多选功能,但一直出错,
出错原因及代码如链接:http://bbs.csdn.net/topics/390820888
搞定之后,仔细回想下,觉得自己没有意识到控件的生命周期问题。
弹出层里面放的checkboxlist的话,那么每选中一个则页面会回发到服务器,然后服务器会解析页面模版并返回html给客户端,客户端重新解析html并渲染,重新生成新页面,且已保留页面状态值。
在这个过程中,回发时,会重新载入PageLoad函数,此刻,在这里写一个是否回发函数,肯定不执行回发函数,然后会判断页面状态,即为SelectedIndexChanged状态,则会重新跳转到弹出层页面,且保留控件状态。
这个周期中,点击-->选择-->回发-->重新载入-->保留空间状态的新页面-->再次点击-->。。。
关于页面状态,即控件状态保存,找到如下说法:
1. 控件的值被存入viewstate,asp.net页面生命周期在打造页面树时,在一系列的管道事件中,在processdata事件中将viewstate里面的还原给控件。
2. asp.net 自己会处理的 如果使用的是服务端控件并且没有禁用页面状态的话 asp.net会自动维持控件的状态
PS:
有人问到一道小题,我觉得挺有意思,发出来,找找乐子。
int k=3,m;
m=(++k)+(++k)+(++k)
计算为 15