[英]GridView add second and third header row in 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 標題作為第三行。 所以對於我的例子,gridview 應該是這樣的並且有 5 列
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"
OnRowCreated="GridView1_RowCreated" ShowHeader="false">
然后是 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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.