当前位置: 代码迷 >> ASP.NET >> datagrid 动态增添一行表头
  详细解决方案

datagrid 动态增添一行表头

热度:9942   发布时间:2013-02-25 00:00:00.0
datagrid 动态添加一行表头
DataGridItem rowHeader = new DataGridItem(0, -1, ListItemType.Header);
rowHeader.Height=30;
Literal newCells = new Literal();

newCells.Text =@"<colspan='3'>标题</th>";

TableCellCollection cells = e.Item.Cells;
TableHeaderCell headerCell = new TableHeaderCell();


headerCell.Controls.Add(newCells);
rowHeader.Cells.Add(headerCell);


rowHeader.Visible = true;

this.DataGrid1.Controls[0].Controls.AddAt(0, rowHeader);

这样加上的表头不是三个各合并在一起,而是以下形式:

 ---------------------------------------
| 标题 | |
 ---------------------------------------
| 语文 | 数学 | 化学 |
 ---------------------------------------



我想要这种样式:
 ---------------------------------------
| 标题 |
 ---------------------------------------
| 语文 | 数学 | 化学 |
 ---------------------------------------

代码上出什么差错了?望指点,谢谢!



------解决方案--------------------------------------------------------
gridview中这样写可以
 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("colspan", "2"); //跨Column
tcHeader[0].Text = "标题</th></tr><tr>";

//第二行表头
tcHeader.Add(new TableHeaderCell());
tcHeader[1].Text = "语文";
tcHeader.Add(new TableHeaderCell());
tcHeader[2].Text = "数学";
tcHeader.Add(new TableHeaderCell());
tcHeader[3].Text = "化学";
break;
}
}
datagrid应类似吧
------解决方案--------------------------------------------------------
headerCell.ColumnSpan = 100;

------解决方案--------------------------------------------------------
探讨
headerCell.ColumnSpan = 100;

------解决方案--------------------------------------------------------
C# code
   public partial class WebForm7 : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {            DataTable dt = new DataTable();            dt.Columns.Add("Chinese", typeof(int));            dt.Columns.Add("Math",typeof(int));            dt.Columns.Add("Nature",typeof(int));            DataRow row = dt.NewRow();            row[0] = 100;            row[1] = 100;            row[2] = 99;            dt.Rows.Add(row);            this.GridView1.DataSource = dt;            this.GridView1.DataBind();        }        protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)        {                        Table t = new Table();            if(e.Row.RowType == DataControlRowType.Header)            {                TableRow r = new TableRow();                TableCell c = new TableCell();                c.Text = "Title";                c.ColumnSpan = 3;                c.HorizontalAlign = HorizontalAlign.Center;                r.Cells.Add(c);                TableRow r2 = new TableRow();                TableCell c1 = new TableCell();                c1.Text = e.Row.Cells[0].Text;                r2.Cells.Add(c1);                TableCell c2 = new TableCell();                c2.Text = e.Row.Cells[1].Text;                r2.Cells.Add(c2);                TableCell c3 = new TableCell();                c3.Text = e.Row.Cells[2].Text;                r2.Cells.Add(c3);                t.Rows.Add(r);                t.Rows.Add(r2);                e.Row.Controls.Clear();                TableCell newc = new TableCell();                newc.ColumnSpan = 3;                newc.Controls.Add(t);                e.Row.Controls.Add(newc);            }        }    }
  相关解决方案