昨天才看了一篇关于动态控件的文章,自我感觉已经知道了点,可今天一遇到实际问题,立刻发现自己对此其实还没有摸到门槛@_@

具体情况是这样:
在一个DataGrid中增加一列CheckBox控件,可以把选中的行的ID传递给下个页面,在这列的header部分也添加一个CheckBox,控制全选和全不选。在动态添加这个控制全选的CheckBox时出了个问题,经过我反复观察,发现如果只在Page_Load中为DataGrid添加控制全选的CheckBox控件,则画面刷新后,控制全选的CheckBox不再出现,如果只在DataGrid的PreRender事件中添加控制全选的CheckBox控件,则动态添加的事件无效。
        protected System.Web.UI.WebControls.CheckBox ckbSelect;
        
        
private void Page_Load(object sender, System.EventArgs e)
        
{
            
//初始化CheckBox
            this.ckbSelect = new CheckBox();
            
this.ckbSelect.AutoPostBack = true;
            
this.ckbSelect.CheckedChanged += new EventHandler(ckbSelect_CheckedChanged);

            
if (!this.IsPostBack)
            
{
                InitDataGrid();
            }


            
//如果这里不写,CheckBox的事件无效
            DataGridItem dgItem = this.dgUserList.Controls[0].Controls[1as DataGridItem;
            dgItem.Cells[
0].Controls.Add(this.ckbSelect);
        }


        
private void dgUserList_PreRender(object sender, System.EventArgs e)
        
{
            
//其他代码
                
            
//如果这里不写,刷新后CheckBox不再出现
            DataGridItem dgItem = this.dgUserList.Controls[0].Controls[1as DataGridItem;
            dgItem.Cells[
0].Controls.Add(this.ckbSelect);
        }

这样写2遍可以解决问题,但肯定是不正确的。^-^
posted on 2007-03-09 14:30  非我  阅读(354)  评论(2编辑  收藏  举报