簡體   English   中英

ASP.NET GridView中的多列標題

[英]Multi column header in ASP.NET GridView

我有一個gridview包含30列,其中我必須在其上設置單個列的列數很少,即我需要給我Leaf Name,Leaf Code,Leaf Value,Leaf Vendor Code,Leaf Id,Leaf ZOnal,Leaf Leveller列上面的單個列為Leaves Details 。我在rowdatabound中執行了以下代碼,但未成功,新的單個列出現在所有頂部。請告訴我我做錯了什么。我做的另一件事是,我設置了gridview屬性PagerSettings Position top因此可以作為索引值1,2,3等出現在網格頂部。

這是我的gridview

 <asp:GridView ID="grdcell" runat="server" AutoGenerateColumns="False" AllowPaging="true" PageSize="13" DataKeyNames="firstname,location"
                CellPadding="4" ForeColor="#333333" OnPageIndexChanging="grdNewcells_PageIndexChanging" OnRowDataBound="grdcell_RowDataBound" >
                <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                <Columns>
                    <asp:TemplateField HeaderText="Insert" HeaderStyle-HorizontalAlign="Left">
                        <HeaderTemplate>
                            <asp:CheckBox ID="insertall" Text="Insert All" onclick="checkAll(this);" runat="server" />
                        </HeaderTemplate>
                        <ItemTemplate>
                            <asp:CheckBox ID="insertChk" runat="server" />
                        </ItemTemplate>
                        <HeaderStyle HorizontalAlign="Left"></HeaderStyle>
                    </asp:TemplateField>
                    <asp:BoundField DataField="Leaf_NAME" HeaderText="Leaf Name" SortExpression="Leaf_NAME"></asp:BoundField>
                    <asp:BoundField DataField="Leaf_CODE" HeaderText="Leaf Code" SortExpression="Leaf_CODE"></asp:BoundField>
                    <asp:BoundField DataField="Leaf_Value" HeaderText="Leaf Value" SortExpression="Leaf_Value"></asp:BoundField>
                    <asp:BoundField DataField="LeafVENDOR_CODE" HeaderText="Leaf Vendor Code" SortExpression="LeafVENDOR_CODE"></asp:BoundField>
                    <asp:BoundField DataField="Leaf_ID" HeaderText="Leaf Id" SortExpression="Leaf_ID"></asp:BoundField>
                    <asp:BoundField DataField="Leaf_ZOnal" HeaderText="Leaf ZOnal" SortExpression="Leaf_ZOnal"></asp:BoundField>
                    <asp:BoundField DataField="Leaf_Leveller" HeaderText="Leaf Leveller" SortExpression="Leaf_Leveller"></asp:BoundField>
                    <asp:BoundField DataField="Loaction" HeaderText="Loaction" SortExpression="Loaction"></asp:BoundField>

以及我row data bound所做的代碼,如下所示

GridViewRow gvRow = e.Row;
                if (gvRow.RowType == DataControlRowType.Header)
                {
                    if (gvRow.Cells[1].Text == "Leaf_NAME")
                    {
                        gvRow.Cells.Remove(gvRow.Cells[1]);
                        GridViewRow gvHeader = new GridViewRow(0, 0, DataControlRowType.DataRow, DataControlRowState.Insert);
                        TableCell headerCell0 = new TableCell()
                        {
                            Text = "Leaves Details",
                            HorizontalAlign = HorizontalAlign.Center,
                            RowSpan = 6
                        };

                        gvHeader.Cells.Add(headerCell0);

                        grdcell.Controls[0].Controls.AddAt(0, gvHeader);
                    }
                }

我通過使用以下鏈接做到了,但是我使用了gridview行創建的事件

單列多列

為了“分組”公共標題(帶有子標題)中的幾列,我使用了TemplateField。 對於2個子列,它看起來像這樣:

<asp:TemplateField HeaderStyle-HorizontalAlign="Center">
    <HeaderTemplate>
        <table runat="server" class="leafCommonHeader" align="center" cellpadding="0" cellspacing="0">
            <tr class="multiColumnMainHeader">
                <td colspan="2">
                    <asp:Label runat="server" CssClass="leafHeader" Text="Leaf Details" />
                </td>
            </tr>
            <tr runat="server">
                <td class="leafNameField">
                    <asp:LinkButton runat="server" CssClass="leafHeader" OnCommand="gvLeavesColumnSort" CommandArgument="LeafName" Text="Name" />
                </td>
                <td class="leafNameField">
                    <asp:LinkButton runat="server" CssClass="leafHeader" OnCommand="gvLeavesColumnSort" CommandArgument="LeafCode" Text="Code" />
                </td>
            </tr>
        </table>
    </HeaderTemplate>
    <ItemTemplate>
        <table runat="server" class="leafCommonItem" cellpadding="0" cellspacing="0">
            <tr>
                <td class="leafNameField">
                    <asp:Literal runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "LeafName")) %>' />
                </td>
                <td class="leafCodeField">
                    <asp:Literal runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "LeafCode") %>' />
                </td>
            </tr>
        </table>
    </ItemTemplate>
</asp:TemplateField>

子標題中的鏈接按鈕用於實現子列的種類。 我包括一些CssClass屬性,這些屬性允許自定義單元格和標簽。 例如,CSS類leafNameFieldleafCodeField可以設置其列的with。

免責聲明:此代碼未在打開分頁的情況下進行測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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