怎么在TableView中动态设置表头和添加新行

 我来答
山水阿锐
2015-04-12 · TA获得超过34.3万个赞
知道顶级答主
回答量:23.7万
采纳率:91%
帮助的人:3.2亿
展开全部
您好,您这样:
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;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式