GridView在c#中添加第二和第三个标题行

我有一个ASP.NET c#GridView ,它有如下所示的列:

| Foo | Bar | Total1 | Total2 | Total3 | 

是否可以在看起来像这样的行上创建标题?

 | General | Totals | | | A | B | C | | Foo | Bar | 1 | 2 | 3 | 

我尝试过使用RowCreated方法 ,但我停下来:

 | General | Totals | | Foo | Bar | 1 | 2 | 3 | 

我的代码如下。

你能帮助我吗?

提前感谢您的任何帮助,非常感谢。

  protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.Header) { GridView ProductGrid = (GridView)sender; GridViewRow HeaderRow = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert); TableCell HeaderCell = new TableCell(); HeaderCell.Text = "General"; HeaderCell.HorizontalAlign = HorizontalAlign.Center; HeaderCell.ColumnSpan = 2; HeaderCell.CssClass = "HeaderStyle"; HeaderRow.Cells.Add(HeaderCell); ProductGrid.Controls[0].Controls.AddAt(0, HeaderRow); HeaderCell = new TableCell(); HeaderCell.Text = "Totals"; HeaderCell.HorizontalAlign = HorizontalAlign.Center; HeaderCell.ColumnSpan = 3; HeaderCell.CssClass = "HeaderStyle"; HeaderRow.Cells.Add(HeaderCell); } } 

这就是你如何做到的。 此代码段以编程方式添加所有3个标题行。 但您也可以使用普通的GridView标头作为第3行。 因此,对于我的示例,gridview应该看起来像这样并且有5列

  

然后是RowCreated方法

 protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) { //cast the sender back to a gridview GridView gv = sender as GridView; //check if the row is the header row if (e.Row.RowType == DataControlRowType.Header) { //create the first row GridViewRow extraHeader1 = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert); extraHeader1.BackColor = Color.LightSalmon; TableCell cell1 = new TableCell(); cell1.ColumnSpan = 2; cell1.Text = "General"; extraHeader1.Cells.Add(cell1); TableCell cell2 = new TableCell(); cell2.ColumnSpan = 3; cell2.Text = "Totals"; extraHeader1.Cells.Add(cell2); //create the second row GridViewRow extraHeader2 = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert); extraHeader2.BackColor = Color.LightGreen; TableCell cell3 = new TableCell(); cell3.ColumnSpan = 2; extraHeader2.Cells.Add(cell3); TableCell cell4 = new TableCell(); cell4.Text = "A"; extraHeader2.Cells.Add(cell4); TableCell cell5 = new TableCell(); cell5.Text = "B"; extraHeader2.Cells.Add(cell5); TableCell cell6 = new TableCell(); cell6.Text = "C"; extraHeader2.Cells.Add(cell6); //create the third row GridViewRow extraHeader3 = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert); extraHeader3.BackColor = Color.LightBlue; //loop all the columns and create a new cell for each for (int i = 0; i < gv.Columns.Count; i++) { TableCell cell = new TableCell(); if (i == 0) cell.Text = "Foo"; else if (i == 1) cell.Text = "Bar"; else cell.Text = (i - 1).ToString(); extraHeader3.Cells.Add(cell); } //add the new rows to the gridview gv.Controls[0].Controls.AddAt(0, extraHeader3); gv.Controls[0].Controls.AddAt(0, extraHeader2); gv.Controls[0].Controls.AddAt(0, extraHeader1); } }