日期:2014-05-19  浏览次数:20374 次

在线等!急!这样GridView的OnRowDataBound事件怎么了?
我的目的是想要在GridView的每个表头项添加一个CheckBox,代码如下:
        protected   void   GridView1_RowDataBound(object   sender,   GridViewRowEventArgs   e)
        {
                if   (e.Row.RowType   ==   DataControlRowType.Header)
                {
                        for   (int   i   =   0;   i   <   GridView1.Columns.Count;   i++)
                        {
                                Literal   l   =   new   Literal();
              CheckBox   chk   =   new   CheckBox();
                                l.Text   =   e.Row.Cells[i].Text;
                                e.Row.Cells[i].Controls.Add(l);
                                e.Row.Cells[i].Controls.Add(chk);
                        }
                }
        }
前台也注册了OnRowDataBound这个事件,但是编译后并没有任何反应。后来我又测试了一下,
把第一列的表头项添加一个CheckBox,代码如下:
        protected   void   GridView1_RowDataBound(object   sender,   GridViewRowEventArgs   e)
        {
                if   (e.Row.RowType   ==   DataControlRowType.Header)
                {
                        Literal   l   =   new   Literal();
      CheckBox   chk   =   new   CheckBox();
      l.Text   =   e.Row.Cells[0].Text;
      e.Row.Cells[0].Controls.Add(l);
      e.Row.Cells[0].Controls.Add(chk);
                }
        }
运行后在第一列的表头项成功添加了一个CheckBox。
请大家看看这到底是什么原因。。。谢谢大家了

------解决方案--------------------
for (int i = 0; i < GridView1.Columns.Count; i++) ==> for (int i = 0; i < e.Row.Cells.Count; i++)
------解决方案--------------------
跟踪一下 .Row.Cells.Count
------解决方案--------------------
不加id也应该生成的.
------解决方案--------------------
for (int i = 0; i < GridView1.Columns.Count; i++)这个问题
------解决方案--------------------
GridView1.Columns 是手动加的列.自动绑定的不算.