设有如下场景: 编辑时, 某格根据某列值被渲染成DropDownList或者CheckBox, 则在何时处理? 若在Item_DataBound事件中处理, 则在Updating事件中找不到动态加上的控件. 答案是需在Item_Create事件中处理.
这里讲一下GridView的生成过程以及各控件加载顺序.
首先, 整个页面初始化, 各控件也初始化, 包括GridView.
然后, Load原来的ViewState, 在这个过程中, GridView会执行RowCreate, 因为Row被Create了, 呵呵, 这时, 动态生成的控件也就被加到了页面控件树中, 各控件也会被相应地恢复ViewState.
接下来是Load事件, 再接下来是DataChange和PostBack事件, 在PostBack中就会处理GridView的Updating事件, 这时GridView里是有动态添加的控件的, 所以就能找到. 一般来说Update后还会立即DataBind, 在DataBound中又会重新生成新的动态控件, 呵呵, 这就是整个过程了, 当然, 后续还有SaveViewState以及Unload和Dispose.
想开发高级的Asp.Net程序, 理解控件(包括Page)的各事件执行顺序是必需的, ^_^
发表于 @
2008年05月24日 10:29:00 | | 编辑|
举报| 收藏