动态创建DataTable,GridView创建多表头,表头跨行或跨列合并,创建计算列及列内容自适应等...

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            GridView1.DataSource = FormatDT();
            GridView1.DataBind();
        }
    }
    
    protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
    {
        switch (e.Row.RowType)
        {
            //页头
            case DataControlRowType.Header:
                //第一行表头
                TableCellCollection tcHeader = e.Row.Cells;
                tcHeader.Clear();

                tcHeader.Add(new TableHeaderCell());
                tcHeader[0].Attributes.Add("bgcolor", "#8E8E8E");
                tcHeader[0].Attributes.Add("rowspan", "0"); //跨Row
                tcHeader[0].Attributes.Add("colspan", "9"); //跨Column
                tcHeader[0].Text = "全部信息</tr><tr>";

                //第二行表头
                tcHeader.Add(new TableHeaderCell());
                tcHeader[1].Attributes.Add("bgcolor", "#008A23");
                tcHeader[1].Text = "身份证号码";

                tcHeader.Add(new TableHeaderCell());
                tcHeader[2].Text = "基本信息";
                tcHeader[2].Attributes.Add("bgcolor", "#005EBB");
                tcHeader[2].Attributes.Add("colspan", "3");                

                tcHeader.Add(new TableHeaderCell());
                tcHeader[3].Text = "福利";
                tcHeader[3].Attributes.Add("bgcolor", "#008A23");
                tcHeader[3].Attributes.Add("colspan", "2");

                tcHeader.Add(new TableHeaderCell());
                tcHeader[4].Text = "应发合计";
                tcHeader[4].Attributes.Add("bgcolor", "#008A23");                

                tcHeader.Add(new TableHeaderCell());
                tcHeader[5].Text = "联系方式</tr><tr>";
                tcHeader[5].Attributes.Add("bgcolor", "#005EBB");
                tcHeader[5].Attributes.Add("colspan", "2");
                

                //第三行表头
                tcHeader.Add(new TableHeaderCell());
                tcHeader[6].Text = "身份证号码";

                tcHeader.Add(new TableHeaderCell());
                tcHeader[7].Text = "姓名";

                tcHeader.Add(new TableHeaderCell());
                tcHeader[8].Text = "出生日期";

                tcHeader.Add(new TableHeaderCell());
                tcHeader[9].Text = "性别";

                tcHeader.Add(new TableHeaderCell());
                tcHeader[10].Text = "基本工资";

                tcHeader.Add(new TableHeaderCell());
                tcHeader[11].Text = "奖金";

                tcHeader.Add(new TableHeaderCell());
                tcHeader[12].Text = "应发合计";

                tcHeader.Add(new TableHeaderCell());
                tcHeader[13].Text = "家庭住址";

                tcHeader.Add(new TableHeaderCell());
                tcHeader[14].Text = "邮政编码";
                break;
            //数据行 内容自适应 不换行
            case DataControlRowType.DataRow:
                TableCellCollection cells1 = e.Row.Cells;
                for (int i = 0; i < cells1.Count; i++)
                {
                    cells1[i].Wrap = false; //设置此项切记 不要设置前台GridView宽度
                }
                break;
        }
    }

    //创建DataTable
    protected DataTable CreateDT()
    {
        DataTable tblDatas = new DataTable("Datas");
        //序号列
        //tblDatas.Columns.Add("ID", Type.GetType("System.Int32"));
        //tblDatas.Columns[0].AutoIncrement = true;
        //tblDatas.Columns[0].AutoIncrementSeed = 1;
        //tblDatas.Columns[0].AutoIncrementStep = 1;
        //数据列
        tblDatas.Columns.Add("身份证号码", Type.GetType("System.String"));
        tblDatas.Columns.Add("姓名", Type.GetType("System.String"));
        tblDatas.Columns.Add("出生日期", Type.GetType("System.String"));
        tblDatas.Columns.Add("性别", Type.GetType("System.String"));
        tblDatas.Columns.Add("基本工资", Type.GetType("System.Decimal"));
        tblDatas.Columns.Add("奖金", Type.GetType("System.Decimal"));
        //统计列开始
        tblDatas.Columns.Add("应发合计", Type.GetType("System.String"), "基本工资+奖金");
        //统计列结束
        tblDatas.Columns.Add("家庭住址", Type.GetType("System.String"));
        tblDatas.Columns.Add("邮政编码", Type.GetType("System.String"));


        tblDatas.Rows.Add(new object[] { null, "张三", "1982", "0", 3000, 1000, null, "深圳市", "518000" });
        tblDatas.Rows.Add(new object[] { null, "李四", "1983", "1", 3500, 1200, null, "深圳市", "518000" });
        tblDatas.Rows.Add(new object[] { null, "王五", "1984", "1", 4000, 1300, null, "深圳市", "518000" });
        tblDatas.Rows.Add(new object[] { null, "赵六", "1985", "0", 5000, 1400, null, "深圳市", "518000" });
        tblDatas.Rows.Add(new object[] { null, "牛七", "1986", "1", 6000, 1500, null, "深圳市", "518000" });
        return tblDatas;
    }

    //转换DataTable中的数据 用于逻辑处理相应的数据 显示
    protected DataTable FormatDT()
    {
        DataTable dt1 = CreateDT();
        //容错处理 用于不确定 自动产生的列
        if (dt1.Columns.Contains("性别"))
        {
            foreach (DataRow dr in dt1.Rows)
            {
                dr["性别"] = (dr["性别"].ToString() == "0") ? "女" : "男";
            }
        }
        return dt1;
    }

转载于:https://my.oschina.net/smartsmile/blog/815470

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值