本文介绍了GridView在C#中添加第二和第三标题行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个 ASP.NET c#GridView ,其中的列如下所示:
I have an ASP.NET c# GridView which has columns that look like this:
| Foo | Bar | Total1 | Total2 | Total3 |
是否可以在看起来像这样的行上创建标题?
Is it possible to create a header on rows that looks like this?
| General | Totals |
| | A | B | C |
| Foo | Bar | 1 | 2 | 3 |
我尝试过使用 RowCreated方法,但是我停止了:
I have tried with RowCreated method, but I'm stopped to :
| 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列
This is how you can do it. This snippet add all 3 header rows programatically. But you could also use the normal GridView header as the 3rd row. So for my example the gridview should look like this and has 5 columns
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"
OnRowCreated="GridView1_RowCreated" ShowHeader="false">
然后是RowCreated方法
And then the RowCreated method
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);
}
}
这篇关于GridView在C#中添加第二和第三标题行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!