Gridview中的ASP.NET Gridview但没有每行的标题

时间:2016-11-18 03:56:47

标签: c# asp.net gridview

我尝试在asp.net的gridview中使用gridview,这就是我所做的

enter image description here

问题是如果行太多,标题会变得很烦人。我希望内部gridview共享这样的公共标题:

enter image description here

这在ASP.NET中是否可行?怎么样?

示例gridview标记

<asp:GridView ID="ItemsGridView" runat="server" AutoGenerateColumns="False" BackColor="White" CssClass="gridviews" Width="600px"
BorderColor="Black" BorderStyle="Ridge" BorderWidth="1px" CellPadding="5" OnRowCommand="ItemsGridView_RowCommand">
<Columns>
    <asp:TemplateField HeaderText="" SortExpression="DepartmentId">
        <ItemTemplate>
            <asp:LinkButton CommandName="GoDet" Font-Underline="false" ForeColor="#676771" Font-Bold="True" ID="linkDepartmentId" CommandArgument='<%# Eval("DepartmentId") %>'
                Text="View" runat="server" />
        </ItemTemplate>
        <ItemStyle VerticalAlign="Middle" HorizontalAlign="Center" />
    </asp:TemplateField>

    <asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-VerticalAlign="Middle">
        <ItemStyle VerticalAlign="Middle" Width="300px" Wrap="False"></ItemStyle>
    </asp:BoundField>


    <asp:TemplateField HeaderText="Sub-Groups">
        <ItemTemplate>
            <asp:GridView ID="SubGroupGridView" runat="server" AutoGenerateColumns="False" BackColor="White" CssClass="subgridviews"
                DataSource='<%# Bind("SubGroupees") %>' BorderStyle="Outset" BorderWidth="1px" CellPadding="3" CellSpacing="3" ShowHeader="False" GridLines="Vertical"     OnRowCommand="SubGroupGridView_RowCommand">
                <Columns>


                    <asp:BoundField DataField="Name">

                        <ItemStyle Width="180px" />
                    </asp:BoundField>

                    <asp:TemplateField HeaderText="" SortExpression="SubGroupId">
                        <ItemTemplate>
                            <asp:LinkButton CommandName="GoSubDet" ID="linkSubGroupId" Font-Underline="false" ForeColor="#676771" Font-Bold="True"
                                CommandArgument='<%# Eval("SubGroupId") %>' Text="Edit" runat="server" />
                        </ItemTemplate>
                        <ItemStyle VerticalAlign="Middle" HorizontalAlign="Center" />
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="" SortExpression="SubGroupId">
                        <ItemTemplate>
                            <asp:LinkButton CommandName="DelSub" ID="linkDelSub" Font-Underline="false" ForeColor="#676771" Font-Bold="True"  CommandArgument='<%# Eval("SubGroupId") %>'
                                Text="Delete" runat="server" />
                        </ItemTemplate>
                        <ItemStyle VerticalAlign="Middle" HorizontalAlign="Center" />
                    </asp:TemplateField>

                </Columns>

            </asp:GridView>
        </ItemTemplate>
        <ItemStyle VerticalAlign="Middle" HorizontalAlign="Center" />
    </asp:TemplateField>

    <asp:TemplateField HeaderText="" SortExpression="DepartmentId">
        <ItemTemplate>
            <asp:LinkButton CommandName="AddSub" ID="linkSubGroupId" Font-Underline="false" ForeColor="#676771" Font-Bold="True" CommandArgument='<%# Eval("DepartmentId") %>'
                Text="Add Sub-Group" runat="server" />
        </ItemTemplate>
        <ItemStyle VerticalAlign="Middle" HorizontalAlign="Center" />
    </asp:TemplateField>


    <asp:TemplateField HeaderText="" SortExpression="DepartmentId">
        <ItemTemplate>
            <asp:LinkButton CommandName="DelItem" ID="linkDelDepartmentId" Font-Underline="false" ForeColor="#676771" Font-Bold="True" CommandArgument='<%# Eval("DepartmentId") %>'
                Text="Delete" runat="server" />
        </ItemTemplate>
        <ItemStyle VerticalAlign="Middle" HorizontalAlign="Center" />
    </asp:TemplateField>


</Columns>

1 个答案:

答案 0 :(得分:0)

您可以在父GridView中使用OnRowDataBound事件,并检查嵌套的GridView是否是第一个,并且只显示第一个中的标题。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        //find the nested grid in the current row with findcontrol
        GridView gridView = e.Row.FindControl("nestedGridView") as GridView;

        //check if it is the first nested gridview and show/hide the header
        if (e.Row.RowIndex == 0)
        {
            gridView.ShowHeader = true;
        }
        else
        {
            gridView.ShowHeader = false;
        }

        //fill the nested grid with data
        gridView.DataSource = dataSource;
        gridView.DataBind();
    }
}
相关问题