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

来源:互联网 发布:美萍足浴软件使用教程 编辑:程序博客网 时间:2024/05/14 17:51
    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;    }

原创粉丝点击