private void DataGrid1_ItemCreated_1(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Header)
{
StringBuilder strtext=new StringBuilder();
strtext.Append("</td>");
strtext.Append("<td colspan=6>当月</td>");
strtext.Append("</tr>");
strtext.Append("<tr>");
strtext.Append("<td colspan=1>居民</td>");
strtext.Append("<td colspan=2>一般</td>");
strtext.Append("<td colspan=2>工付业</td>");
strtext.Append("</tr>");
strtext.Append("<tr>");
strtext.Append("<td>" + e.Item.Cells[0].Text);
e.Item.Cells[0].Text =strtext.ToString();
}
}
这个是三层表头代码,他的效果如图:
我想实现的效果应该是"当月"在第0行第0单元格开始,不知道为什么他跳过了一个单元格,那位大哥帮忙看看,郁闷半天了。
下面是另一种做法:
if ( e.Item.ItemType == ListItemType.Header )
{
TableCellCollection tcl = e.Item.Cells;//获得表头元素的实例
tcl.Clear();//清除原有控件
tcl.Add( new TableHeaderCell() );//添加表头控件
tcl[0].RowSpan = 3; //定义表头的所占的行数
tcl[0].Text = "项目编号";
//下一行
tcl.Add(new TableHeaderCell());
tcl[1].RowSpan=3;
tcl[1].Text="项目名称";
tcl.Add( new TableHeaderCell() );
tcl[2].ColumnSpan = 3;
tcl[2].Text = "客户</th></tr><tr></th></tr><th>合同金额</th><th>开票金额</th><th>到款金额";
tcl.Add( new TableHeaderCell() );
tcl[3].ColumnSpan = 3;
tcl[3].Text = "供应商</th></tr><tr></th></tr><th>采购合同金额</th><th>开票金额</th><th>付款金额";
}
效果如图:
为什么"供应商"不顶在最上面显示啊~~
那位大哥赶紧帮忙看看,弄了好几天了,用别的方法也许,只要能实现上面那种三层表头。
[此贴子已经被作者于2006-11-1 8:55:46编辑过]