gridview里加checkbox cs 文件 纯代码生成

本文介绍了一种在ASP.NET中使用C#动态创建并填充GridView的方法。通过从URL参数解析表名,动态生成多个GridView,并为每个GridView绑定相应数据源。文章详细展示了如何设置GridView属性及模板列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


  protected void Page_Load(object sender, EventArgs e)
        {


            string tmpStr = Request.QueryString["pm"];
            string[] strArray = tmpStr.Split('$');
           
          
            string ssss = "";
            div1.Controls.Clear();

             for (int i = 0; i < strArray.Length;i++ )
             {
                 string tableName = strArray[i].Trim();
                 ssss += tableName;
                 GridView gv = new GridView();
                 gv = CreateGridView(tableName);
                 gv.DataSource = NewMethod(tableName);
                 gv.DataBind();
                 div1.Controls.Add(gv);

                 //for (int j = 0; j < div1.Controls.Count; j++)
                // {
                     //我这里是先把GridView加入div1中,之后才进行数据绑定
                   //  ((GridView)div1.Controls[j]).DataSource = NewMethod(tableName);
                    // ((GridView)div1.Controls[j]).DataBind();
                // }

             }
            


          //   bindGV();


             TB.Text = ssss;

        }


        public GridView CreateGridView(string tableName) {

            GridView gv = new GridView();
           
            gv.AutoGenerateColumns = false;
            gv.EnableViewState = true;
            gv.ID = "gridview";
            gv.DataKeyNames = new string[] { "名称" };
          
            BoundField bf = new BoundField();
            bf = new BoundField();
            bf.HeaderText = tableName;
            bf.DataField = "名称";
            gv.Columns.Add(bf);

             TemplateField tfColumn = new TemplateField();
             tfColumn.HeaderText = "";
             tfColumn.ItemTemplate = new MyTemplate("", DataControlRowType.DataRow);
             gv.Columns.Add(tfColumn);
           

            CommandField cf = new CommandField();
            cf.ShowSelectButton = true;
            gv.Columns.Add(cf);
           
            return gv;
       
       
        }

        //控制gridview行数
        private DataTable NewMethod(string tableName)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("名称", typeof(string));


            SqlOperate so = new SqlOperate();
            string sql = "select name from syscolumns where id in (select id from sysobjects where type = 'u' and name = '"+ tableName +"') ";
            SqlDataReader myRead = so.ExecuteReader(sql);
            //int count = 0;
            while(myRead.Read()){
              
                DataRow dr = dt.NewRow();
                dr["名称"] = myRead[0].ToString();
                dt.Rows.Add(dr);
              
        
         }
      
            return dt;
        }


        public class MyTemplate : ITemplate
        {
            private string strColumnName;
            private DataControlRowType dcrtColumnType;

            public MyTemplate()
            {
                //
                // TODO: 在此处添加构造函数逻辑
                //
            }

            <summary>
            /// 动态添加模版列
            /// </summary>
            /// <param name="strColumnName">列名</param>
            /// <param name="dcrtColumnType">列的类型</param>
            public MyTemplate(string strColumnName, DataControlRowType dcrtColumnType)
            {
                this.strColumnName = strColumnName;
                this.dcrtColumnType = dcrtColumnType;
            }

            public void InstantiateIn(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 = "CheckBox1";
                        cb.Checked = false;
                        ctlContainer.Controls.Add(cb);
                        break;
                }
            }
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值