GridView动态创建列、多行表头

一、动态创建列

//创建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的总体宽度

}

在GridView绑定之前,调用以上方法:

//绑定GridView的数据
private void BindGrid()
{
    
#region 添加动态列
    GridView1.Columns.Clear();
    GridView1.Width 
= new Unit(0);

    CreateGridColumn(
"name""名称"150"cuntleft""cuntleft");
    //再次调用CreateGridColumn方法,动态创建其他的列
    //.......
    
#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>"//跨四列
        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);
    }
}
 
最后的显示的GridView表头结果如下:
名称 汇总
星期一 星期二 星期三 星期四
posted on 2011-03-24 16:54  凡夫·俗子  阅读(10128)  评论(2编辑  收藏  举报