惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
罗磊的独立博客
The GitHub Blog
The GitHub Blog
V
V2EX
Last Week in AI
Last Week in AI
博客园 - 聂微东
MyScale Blog
MyScale Blog
美团技术团队
L
LangChain Blog
博客园 - Franky
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园_首页
S
SegmentFault 最新的问题
爱范儿
爱范儿
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Stack Overflow Blog
Stack Overflow Blog
量子位
小众软件
小众软件
宝玉的分享
宝玉的分享
J
Java Code Geeks
Google DeepMind News
Google DeepMind News
D
Docker
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

博客园 - 非我

目前主流的四大浏览器内核Trident、Gecko、WebKit以及Presto 随手记录: MVC自定义提交form 在文本框的光标处插入指定的文本(另一种方式) 在文本框的光标处插入指定的文本(兼容IE6和Firefox) Javascript对象的比较 javascript对象的深拷贝 对mootools的颜色选择器做个小改进 用户中心 - 博客园 检查矩阵是否有线性相关性 - 非我 - 博客园 WOW笑话,笑死我了 动态修改/添加CSS文件链接 使用.net验证控件遇到的小麻烦 (转)40种网站设置技巧 访问者模式-Visitor 学习与思考 对Response.End的疑问 累啊~用记事本写的小程序 Observer pattern 观察者模式 艾薇尔新歌GrilFriend的MV Command Pattern - 命令模式(ASP.NET版)
动态控件的问题
非我 · 2007-03-09 · via 博客园 - 非我

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

具体情况是这样:
在一个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遍可以解决问题,但肯定是不正确的。^-^