日期:2014-05-18  浏览次数:20389 次

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;