ASP.NET Grid View行的样式未定义

3
我有一个奇怪的问题。 我创建了一个绑定到ObjectDataSource的GridView。
现在我遇到的奇怪问题是,所有的网格行都具有样式“background-color:White”。 但是我从未声明过这个样式,也找不到在我的项目中设计它的任何地方。不管是在.aspx文件中内联,还是在任何css或代码后面。简单来说,在我的项目中没有这个样式定义。
我直接添加到GridView中的信息被样式定义覆盖了。以下是Firebug获取的内容:
<div>
<table id="MainContent_UserGrid" cellspacing="0" cellpadding="4" style="width:100%;border-collapse:collapse;">
<tbody>
<tr style="color:White;background-color:#5D7B9D;font-weight:bold;">
<tr style="color:#333333;background-color:White;">
<td>
<td>name.ofme@mydomain.com</td>
<td>Name of me</td>
<td>Y</td>
<td>
</tr>
<tr style="color:#284775;background-color:White;">
<tr style="color:#333333;background-color:White;">
<tr style="color:#284775;background-color:White;">
<tr style="color:#333333;background-color:White;">
</tbody>
</table>
</div>

这是我的网格视图(Grid)的ASPX代码:
<asp:GridView ID="UserGrid"
              runat="server"
              AutoGenerateColumns="False" 
              DataKeyNames="AD_ID"
              DataSourceID="UserByAdminAdapter" CellPadding="4" 
              GridLines="None" Width="100%" AllowPaging="True">

    <Columns>
        <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" 
            ShowSelectButton="True" />
        <asp:BoundField DataField="AD_ID" HeaderText="AD_ID" ReadOnly="True" 
            SortExpression="AD_ID"></asp:BoundField>
        <asp:BoundField DataField="NAME" HeaderText="NAME" SortExpression="NAME" 
            ReadOnly="True">
        </asp:BoundField>
        <asp:BoundField DataField="ACCOUNT_TYPE" HeaderText="ACCOUNT_TYPE" 
            SortExpression="ACCOUNT_TYPE" Visible="False" ReadOnly="True"></asp:BoundField>
        <asp:BoundField DataField="ADMIN_ID" HeaderText="ADMIN_ID" 
            SortExpression="ADMIN_ID" Visible="False" ReadOnly="True"></asp:BoundField>
        <asp:BoundField DataField="BOOKINGS_CONSISTENT" HeaderText="BOOKINGS_CONSISTENT" 
            SortExpression="BOOKINGS_CONSISTENT" ReadOnly="True"></asp:BoundField>
        <asp:BoundField DataField="COMPANY" HeaderText="COMPANY" 
            SortExpression="COMPANY" Visible="False" />
        <asp:TemplateField HeaderText="COMPANY_NAME" SortExpression="COMPANY_NAME">
            <EditItemTemplate>
                <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="Companies" 
                    DataTextField="NAME" DataValueField="ROW_ID" 
                    SelectedValue='<%# Bind("COMPANY") %>'>
                </asp:DropDownList>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" Text='<%# Bind("COMPANY_NAME") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>

    <RowStyle  BackColor="#000000" ForeColor="#333333"  />
    <AlternatingRowStyle  BackColor="#99FFCC" ForeColor="#284775" />

    <EditRowStyle BackColor="#999999" />
    <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />

    <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
    <sortedascendingcellstyle backcolor="#E9E7E2" />
    <sortedascendingheaderstyle backcolor="#506C8C" />
    <sorteddescendingcellstyle backcolor="#FFFDF8" />
    <sorteddescendingheaderstyle backcolor="#6F8DAE" />

</asp:GridView>

顺便提一下,在C#代码中更改行的背景颜色并不起作用。

我有一个通过CSS的解决方法,但这不是“好的”解决方案。

感谢您目前的帮助!


你的CSS文件中是否定义了table、tr或td的样式? - peroija
1
你的项目中有任何 .net 主题吗? - ScottE
2个回答

1
你的项目中是否有一个主题可能会覆盖你的网格样式?
你是否在代码后面修改了样式(我怀疑不是)。
不要将特定的样式放在gridview footerStyle中,为什么不在你的CSS中创建一个类并链接到它呢?
<RowStyle  BackColor="#000000" ForeColor="#333333"  />

变成

<RowStyle CssClass="ItemStyle" />

这可能会使在Firebug中进行故障排除更加容易,并减少内联样式的数量(同时更易于维护)。


你指的是什么样的主题?我尝试用一个新的GridView主题来覆盖不好的样式,但是不好的样式没有被覆盖掉。 - user1776979
我指的是asp.net主题和皮肤 - http://msdn.microsoft.com/zh-cn/library/ykzx33wh(v=vs.100).aspx - Lareau
嗯,我为GridView定义了一个主题,以添加一个DropDown元素。我会尝试用这种方式解决它...但我可以肯定地说,它不在代码后台。 - user1776979

0

这是自动样式。您可以为GridView创建CSS类,并将它们应用于以下属性:

        <HeaderStyle CssClass="tableHead"  />
        <RowStyle CssClass="tableRow" />
        <PagerStyle CssClass="pager" />

    //Example 
    <asp:GridView runat="server" ID="grdAssetSearchResults" AutoGenerateColumns="false" GridLines="Both" AllowSorting="true"  UseAccessibleHeader="true" >
        <HeaderStyle CssClass="tableHead"  />
        <RowStyle CssClass="tableRow" />
        <PagerStyle CssClass="pager" />
        <Columns>
         //Columns
        </Columns>
    </asp:GridView>

但是为什么AutoStyling会添加“background-color: White”呢? 如果可以的话,我宁愿使用ASPX样式来设置GridView而不是使用CSS。 - user1776979

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接