DataGrid生成多行表头
我们一般在写报表时候会遇到USER苛刻的需求,如对查询的Grid中表头要多行,搞的像Excel搞的各位开发人员焦头烂额,不过要是真正实现其功能也不算太难,请看详细分解。
如果user需求如下表头:
A | B | C | |
---|---|---|---|
D | E |
首先按照平常的写法绑定DataGrid。然后在ItemCreated事件中加入
protected void DataGrid1_ItemCreated(object sender,DataGridItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.Header)
{
TableCellCollection tcl = e.Item.Cells;
tcl.Clear(); //清除表头内容
tcl.Add(new TableHeaderCell());
tcl[0].RowSpan = 2;
tcl[0].Text = "A";
tcl.Add(new TableHeaderCell());
tcl[1].ColumnSpan = 2;
tcl[1].Text = "B";
tcl.Add(new TableHeaderCell());
tcl[2].RowSpan = 2;
tcl[2].Text = "C</th><tr>";
tcl[2].Text += "<tr><th>D</th><th>E"; //记住这行的结尾哦。
}
}
{
if(e.Item.ItemType == ListItemType.Header)
{
TableCellCollection tcl = e.Item.Cells;
tcl.Clear(); //清除表头内容
tcl.Add(new TableHeaderCell());
tcl[0].RowSpan = 2;
tcl[0].Text = "A";
tcl.Add(new TableHeaderCell());
tcl[1].ColumnSpan = 2;
tcl[1].Text = "B";
tcl.Add(new TableHeaderCell());
tcl[2].RowSpan = 2;
tcl[2].Text = "C</th><tr>";
tcl[2].Text += "<tr><th>D</th><th>E"; //记住这行的结尾哦。
}
}
简单吧。要注意表头行的第一层要建立对象第二层及以后就要用HTML写上,最后还要注意结尾没有结束的tag.
这是我的经验哦,记得为我加油!