一、动态创建列:
//创建GridView列的方法
private void CreateGridColumn(string dataField, string headerText, int width, string headerStyle, string itemStyle)
{
BoundField bc = new BoundField();
bc.DataField = dataField;
bc.HeaderText = headerText;
bc.HeaderStyle.CssClass = headerStyle; //若有默认样式,此行代码及对应的参数可以移除
bc.ItemStyle.CssClass = itemStyle; //若有默认样式,此行代码及对应的参数可以移除
GridView1.Columns.Add(bc); //把动态创建的列,添加到GridView中
GridView1.Width = new Unit(GridView1.Width.Value + width); //每添加一列后,要增加GridView的总体宽度
}
{
BoundField bc = new BoundField();
bc.DataField = dataField;
bc.HeaderText = headerText;
bc.HeaderStyle.CssClass = headerStyle; //若有默认样式,此行代码及对应的参数可以移除
bc.ItemStyle.CssClass = itemStyle; //若有默认样式,此行代码及对应的参数可以移除
GridView1.Columns.Add(bc); //把动态创建的列,添加到GridView中
GridView1.Width = new Unit(GridView1.Width.Value + width); //每添加一列后,要增加GridView的总体宽度
}
在GridView绑定之前,调用以上方法:
//绑定GridView的数据
private void BindGrid()
{
#region 添加动态列
GridView1.Columns.Clear();
GridView1.Width = new Unit(0);
CreateGridColumn("name", "名称", 150, "cuntleft", "cuntleft");
private void BindGrid()
{
#region 添加动态列
GridView1.Columns.Clear();
GridView1.Width = new Unit(0);
CreateGridColumn("name", "名称", 150, "cuntleft", "cuntleft");
//再次调用CreateGridColumn方法,动态创建其他的列
//.......
#endregion
#endregion
//dt:数据源
GridView1.DataSource = dt;
GridView1.DataBind();
}
二、动态创建表头
在GridView的RowCreated事件中,添加以下代码:
//设计表头
protected void SmartGridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
TableCellCollection header = e.Row.Cells;
header.Clear();
string headtxt = "名称</th>";
headtxt += "<th colspan='4'>汇总</th>"; //跨四列
protected void SmartGridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
TableCellCollection header = e.Row.Cells;
header.Clear();
string headtxt = "名称</th>";
headtxt += "<th colspan='4'>汇总</th>"; //跨四列
headtxt += "<th>星期一</th><th>星期二</th><th>星期三</th><th>星期四</th>";
headtxt = headtxt.Substring(0, headtxt.Length - 5); //移除掉最后一个</th>
TableHeaderCell cell = new TableHeaderCell();
cell.Attributes.Add("rowspan", "2"); //跨两行
cell.Text = (headtxt);
header.Add(cell);
headtxt = headtxt.Substring(0, headtxt.Length - 5); //移除掉最后一个</th>
TableHeaderCell cell = new TableHeaderCell();
cell.Attributes.Add("rowspan", "2"); //跨两行
cell.Text = (headtxt);
header.Add(cell);
}
}
}
最后的显示的GridView表头结果如下:
名称 | 汇总 | |||
---|---|---|---|---|
星期一 | 星期二 | 星期三 | 星期四 |