【问题标题】:ASP.NET Grid View row with style never defined从未定义样式的 ASP.NET 网格视图行
【发布时间】:2012-10-16 16:50:57
【问题描述】:

我有一个奇怪的问题。 我创建了一个绑定到 ObjectDataSource 的 GridView。

我现在有一个奇怪的事情,所有网格行都有样式“背景颜色:白色”。 但我从未声明过这一点,我在我的项目中找不到任何设计它的地方。既不内联 .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 定义样式?
  • 您的项目中是否有任何 .net 主题?

标签: c# asp.net html css gridview


【解决方案1】:

您的项目中是否有某个主题可能会覆盖您的网格样式?

您是否可以在您的代码后面某处修改样式(我对此表示怀疑)。

与其在你的 gridview footerStyle 中放置特定的样式,不如在你的 CSS 中创建一个类并链接到该类

<RowStyle  BackColor="#000000" ForeColor="#333333"  />

变成

<RowStyle CssClass="ItemStyle" />

它可能更容易在 Firebug 中解决问题并减少内联样式的数量(同时更易于维护)。

【讨论】:

  • 你是什么主题?我试图用新的 GridView 主题覆盖坏样式,但坏样式没有被覆盖。
  • 我指的是 asp.net 主题和皮肤 - msdn.microsoft.com/en-us/library/ykzx33wh%28v=vs.100%29.aspx
  • Mhh 我为 GridViews 定义了一个主题,用于在其中添加 DrowDown 元素。我会尝试以这种方式解决这个问题......但我可以肯定地说它不在后面的代码中。
【解决方案2】:

它是自动样式。您可以为您的 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 添加“背景颜色:白色”?如果可以的话,我会坚持使用 ASPX 方式来设置 GridView 的样式,而不是使用 css。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多