簡體   English   中英

GridView在c#中添加第二個和第三個標題行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM