gridview动态生成表头、合并表头

1.gridview的RowCreated事件可以控制每一行生的内容,包括表头
2.在生成表头行时,可以控制生成怎样的表头及其样式。
3.生成多行表头的关键是添加</tr><tr>对,有点类似于sql注入的方式.
4.表头的跨行跨列是能过其属性colspan、rowspan来设置的。
5.可以在表头增加各种控件,实现更多的功能。

protected   void  GridView1_RowCreated( object  sender, GridViewRowEventArgs e)
    
{
        
int i = 0;
        
int j = 0;
        
//今年的12个月
        if (e.Row.RowType == DataControlRowType.Header)
        
{
            TableCellCollection tcHeader 
= e.Row.Cells;
            tcHeader.Clear();
//原有表头清空
            tcHeader.Add(new TableHeaderCell());
            
//职位字段的表头
            tcHeader[0].Attributes.Add("rowspan""2"); //跨Row
            tcHeader[0].CssClass = "locked";
            Label lb 
= new Label();
            lb.Text 
= "姓名";
            lb.Width 
= 100;
            tcHeader[
0].Controls.Add(lb);

            
//第一行表头
            for (i = 1; i <= 12 + years; i++)
            
{
                tcHeader.Add(
new TableHeaderCell());
                tcHeader[i].CssClass 
= "locked3";
                tcHeader[i].Attributes.Add(
"colspan", Convert.ToString(num_type + 1)); //跨Column
                if (i <= 12)
                
{
                    tcHeader[i].Text 
= Convert.ToString(i) + "";
                }

                
else
                    
if (i == 12 + years)
                        tcHeader[i].Text 
= Convert.ToString(PLAN_ID + i - 13+ "年合计</th></tr><tr style='color:White;background-color:#507CD1;font-weight:bold;'>";
                    
else
                        tcHeader[i].Text 
= Convert.ToString(PLAN_ID + i - 13+ "年合计";
                tcHeader[i].HorizontalAlign 
= HorizontalAlign.Center;
            }


            
int start = 12 + years;//第二行表头开始的编号
            
//第二行表头
            for (i = 1; i <= 12 + years; i++)
            
{
                tcHeader.Add(
new TableHeaderCell());
                tcHeader[start 
+ 1].CssClass = "locked3";
                tcHeader[start 
+ 1].Text = "人数";
                
for (j = 1; j <= num_type; j++)
                
{
                    tcHeader.Add(
new TableHeaderCell());
                    tcHeader[start 
+ 1 + j].CssClass = "locked3";
                    tcHeader[start 
+ 1 + j].Text = "类型" + j.ToString();
                }

                start 
= start + num_type + 1;
            }

        }


       
//下面是每一行的控制,在这里是textbox,接受输入
        if (e.Row.RowType == DataControlRowType.DataRow)
        
{
            
for (i = 1; i <= 12 + years; i++)
            
{
                
for (j = 0; j <= num_type; j++)
                
{
                    TableCell tc 
= new TableCell();
                    TextBox tb 
= new TextBox();
                    tb.Width 
= 60;
                    tc.Controls.Add(tb);
                    e.Row.Cells.Add(tc);
                }

            }


        }

        
    }

效果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值