在GridView Skin中应用ItemStyle或HeaderStyle

时间:2012-08-06 19:49:49

标签: asp.net

我想使用ASP.NET主题的皮肤或其他功能(或任何其他自动方式)将默认的基于列的样式应用于我的GridView控件。

目前我的GridView外观如下所示:

<asp:GridView runat="server" GridLines="None">
    <HeaderStyle CssClass="GridViewRowHeader" />
    <FooterStyle CssClass="GridViewRowHeader" />
    <RowStyle CssClass="GridViewRowA" />
    <AlternatingRowStyle CssClass="GridViewRowB" />
</asp:GridView>

典型的GridView列定义如下所示:

    <Columns>
        <asp:BoundField DataField="ExitTimestamp" HeaderText="Exit" SortExpression="ExitTimestamp">
            <ItemStyle CssClass="GridViewCell" />
            <HeaderStyle CssClass="GridViewHeader" />
        </asp:BoundField>
        <asp:TemplateField HeaderText="Visitor Name/Agency">
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" Text='<%# Bind("VisitorName") %>'></asp:Label><br />
                <asp:Label ID="Label2" runat="server" Text='<%# Bind("VisitorAgency") %>'></asp:Label>
            </ItemTemplate>
            <ItemStyle CssClass="GridViewCell" />
            <HeaderStyle CssClass="GridViewHeader" />
        </asp:TemplateField>
    </Columns>

我想要解决的问题是必须将<ItemStyle><HeaderStyle>元素添加到GridView控件中的每个列定义中。我在皮肤文件中尝试了各种方法,包括在其中添加<Columns>容器和<ItemStyle>元素,但似乎没有任何效果。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

对于后人,这是我最终使用CSS专门解决问题的方法。

我在我的皮肤文件中为GridView分配了一个CSS类,如下所示:

<asp:GridView runat="server" CssClass="GridView">

该样式选择td中的th(item)和GridView(标题)单元格,并且与使用ItemStyle直接应用普通CSS类一样有效列定义中的HeaderStyle

table.GridView tr td, table.GridView tr th
{
   /* style attributes here */
}

答案 1 :(得分:1)

这里的建议可能适合你http://forums.asp.net/t/1063057.aspx简而言之,并在你的gridview中添加一个CssClass,然后使用普通的旧CSS样式表来定位和装饰控件。