GridView在C#中添加第二和第三标题行 [英] GridView add second and third header row in c#

查看:165
本文介绍了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#中添加第二和第三标题行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆