在asp.net gridview数据控件里面动态增加一个checkbox 控件。代码如下:private string strColumnName;
        private DataControlRowType dcrtColumnType;
        /// <summary>
        /// 动态添加模版列
        /// </summary>
        /// <param name="strColumnName">列名</param>
        /// <param name="dcrtColumnType">列的类型</param>
        public GenGridTemplateUtil(string strColumnName, DataControlRowType dcrtColumnType)
        {
            this.strColumnName = strColumnName;
            this.dcrtColumnType = dcrtColumnType;
        }        /// <summary>
        /// 生成girdview列
        /// </summary>
        /// <param name="ctlContainer"></param>
        public void InstantiateIn(System.Web.UI.Control ctlContainer)
        {            switch (dcrtColumnType)
            {
                case DataControlRowType.Header: //列标题
                    Literal ltr = new Literal();
                    ltr.Text = strColumnName;
                    ctlContainer.Controls.Add(ltr);
                    break;
                case DataControlRowType.DataRow: //模版列内容——加载CheckBox 
                    CheckBox cb = new CheckBox();
                    cb.ID = "CheckBox";
                   // cb.AutoPostBack = true;
                    cb.Checked = false;
                    ctlContainer.Controls.Add(cb);
                    break;
            }
        } TemplateField Field = new TemplateField();
            Field.HeaderText = "选择";
            Field.ShowHeader = true;
            Field.HeaderTemplate = new GenGridTemplateUtil("选择", DataControlRowType.Header);
            Field.ItemTemplate = new GenGridTemplateUtil("", DataControlRowType.DataRow);
            this.grid_list.Columns.Insert(0, Field);然后我用这段代码判断checkbox的值 无法取到,大家帮看看问题出现在什么东西,增加checkBOX的方法在pageload里面调用的//GridView gridview = this.Page_List.FindControl("grid_list") as GridView;
  //if (gridview != null)
        //{
        //    for (int i = 0; i < gridview.Rows.Count; i++)
        //    {
        //        CheckBox CheckBox = gridview.Rows[i].Cells[0].FindControl("CheckBox") as CheckBox;              
        //        if(CheckBox!=null)
        //        {
        //            if (CheckBox.Checked)
        //            {
        //                Id += gridview.Rows[i].Cells[1].Text.Trim();
        //                Id += "&";
        //            }
        //        }
        //    }
        //}

解决方案 »

  1.   

    http://www.cnblogs.com/12384610/articles/1075609.html
      

  2.   


    //if (gridview != null) 
            //{ ......你可以直接用js获取CheckBox的值.
      

  3.   

    显示的时候checkbox加成功了吗?CheckBox是加载模板列上的,在有多行数据时候,搜索它的id还是“ CheckBox”吗?
    debug时候,看一下cell里面有checkbox吗?
      

  4.   

    CheckBox CheckBox = gridview.Rows[i].........
    还能这么写?
    在服务器端写这个没用过,建议你可以考虑用js来写
      

  5.   

    我的gridview是用户控件来做的 ,页面直接调用的。
    然后在页面里面先找到用户控件的gridview ID,然后在从过找到的gridview来找这个里面checkbox选择的值。
    除了JS没有解决办法了吗?
      

  6.   

       // cb.AutoPostBack = true; 
          cb.Checked = false;
    这上面句我觉得都没什么必要,默认就是没有选择的,第二,确定你的gridview已经得到,然后就是你的checkbox的ID换个名称试试!
    再不行的话,你把这段代码改下看看:
    CheckBox CheckBox =(CheckBox)gridview.Rows[i].Cells[0].Controls[0];
    看看,还报错的话,你贴出来! 
      

  7.   

    GridView中的CheckBox的ID格式一般是你自定义的ID_xxxx,所以无法通过ID名称获取控件
    但是可以通过GridView.Rows[i].Cell[j].Controls[k]获取到,在表格中只有1个控件时k=0,如果0取不到,你可以查看网页源文件来看此控件在cell中的位置