关于ASP.NET网格视图的问题

时间:2011-09-23 14:36:32

标签: asp.net html gridview web

我有一个gridview。是否可以修改gridview以便我可以在列标题中有多行?例如,以下代码生成下图中的表。

<asp:GridView ID="productsGridView" Runat="server" DataSourceID="productDataSource" AutoGenerateColumns="False" AllowSorting="True" BorderWidth="2px" 
            BackColor="White" GridLines="None" CellPadding="3" CellSpacing="1" BorderStyle="Ridge" BorderColor="White" AllowPaging="True">
    <FooterStyle ForeColor="Black" BackColor="#C6C3C6"></FooterStyle>
    <PagerStyle ForeColor="Black" HorizontalAlign="Right" BackColor="#C6C3C6"></PagerStyle>
    <HeaderStyle ForeColor="#E7E7FF" Font-Bold="True" BackColor="#4A3C8C"></HeaderStyle>

    <Columns>
       <asp:BoundField HeaderText="Product" DataField="ProductName" SortExpression="ProductName"></asp:BoundField>
       <asp:BoundField HeaderText="Unit Price" DataField="UnitPrice" SortExpression="UnitPrice" DataFormatString="{0:c}">
          <ItemStyle HorizontalAlign="Right"></ItemStyle>
       </asp:BoundField>
       <asp:BoundField HeaderText="Units In Stock" DataField="UnitsInStock" SortExpression="UnitsInStock" DataFormatString="{0:d}">
          <ItemStyle HorizontalAlign="Right"></ItemStyle>
       </asp:BoundField>
       <asp:BoundField HeaderText="Quantity Per Unit" DataField="QuantityPerUnit"></asp:BoundField>
    </Columns>
    <SelectedRowStyle ForeColor="White" Font-Bold="True" BackColor="#9471DE"></SelectedRowStyle>
    <RowStyle ForeColor="Black" BackColor="#DEDFDE"></RowStyle>
</asp:GridView>

enter image description here

此表在列标题中只有一行。我正在寻找的是这样的:

enter image description here

关于如何实现这一目标的任何想法?这甚至可能吗?

1 个答案:

答案 0 :(得分:2)

如果您使用TemplateField,您也可以控制标题模板,这可以是自定义ASPX标记。缺点是您必须使用标签手动显示数据,而不是使用更简单的BoundField属性。但是,这也允许您在自定义布局中布局数据以符合标题:

<Columns>
    <asp:TemplateField>
        <HeaderTemplate>
            Weight<br />
            Date | Time<br />
            Product
        </HeaderTemplate>
        <ItemTemplate>
            <asp:Label runat="server" Text='<%#Eval("Weight") %>'></asp:Label><br />
            <asp:Label runat="server" Text='<%#Eval("Date") %>'></asp:Label> |
            <asp:Label runat="server" Text='<%#Eval("Time") %>'></asp:Label><br />
            <asp:Label runat="server" Text='<%#Eval("Product") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
</Columns>