6

这可能是一件非常简单的事情,但我对 CSS 完全陌生。我只想能够在gridview中的行上具有鼠标悬停效果,如果悬停在行上,则更改行的颜色。我很好奇我的 CSS 文件是否在正确的位置?我的 Gridview.CSS 是否应该与我的 gridview.aspx 位于同一个文件夹中(我假设是这样?)。

这是我的 CSS 文件:

.Gridview tr.normal
 {
   background-color:white;
 }

 .Gridview tr.highlight
  {
     background-color:yellow;
  }

以下是我尝试实现它的方式: 在 .aspx 文件中:

 <asp:GridView ID="MsgInbox" runat="server" ....OnRowCreated="Gridview_RowCreated" CssClass = "Gridview">

在后面的 C# 代码中:

    protected void Gridview_RowCreated(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.CssClass = "highlight";
        }
    }

我知道我的 C# 中一定遗漏了一些非常简单的东西。任何帮助,将不胜感激!谢谢!

4

10 回答 10

4

我从另一个答案中窃取了我的部分解决方案,因此我的样式会一次性影响所有网格视图。

将此添加 CssClass="GridView"到您的 asp:GridView 标记中。

<asp:GridView ID="grdLongID" runat="server" CssClass="GridView" CellPadding="4" ForeColor="#333333" GridLines="None" AllowSorting="true" OnSorting="grdLongID_Sorting" RowStyle-HorizontalAlign="center" AutoGenerateColumns="False" Width="100%">

然后在您的 style.css 中,您可以执行以下操作:

table.GridView th {
  border-bottom: 1px solid #ED7A0A;
  text-decoration: none;
}

table.GridView tr:hover {
  background-color: #fabf85;
}

关键是:hover伪类。

于 2016-08-22T21:24:24.677 回答
3

首先,您使用此代码设置行样式,在 GridView 内部,我称之为.row

<RowStyle CssClass="row"  />

然后你使用这个 css 让它改变背景颜色,或者当鼠标移动时你喜欢什么。

tr.row
{
    background-color:#fff;
}


tr.row td
{ 
}

tr.row:hover td, 
tr.row.over td
{ 
    background-color: #eee;
}

这里的技巧是,因为 GridView 呈现为表格,所以我在样式中添加tdtr以访问表格行上的鼠标。

AlternatingRowStyle因为如果你喜欢使用它还有另一种行样式,你可以简单地用同样的方法多做一个样式。

于 2012-08-13T06:33:41.393 回答
1

这是我如何做到这一点的:

按照本教程更改鼠标悬停时突出显示的行:

http://msmvps.com/blogs/deborahk/archive/2010/01/25/asp-net-selecting-a-row-in-a-gridview.aspx

这也解释了处理行选择的代码。我的 gridview 有交替的行颜色。为了恢复您刚刚悬停的行的原始颜色,请在 mouseover 中为原始 backgroundColor 创建一个自定义属性并在 mouseOut 上恢复它,如下所示:

row.Attributes["onmouseover"] = "this.originalstyle=this.style.backgroundColor;this.style.cursor='hand';this.style.backgroundColor='#ffccff';";

row.Attributes["onmouseout"] = "this.style.textDecoration='none';this.style.backgroundColor=this.originalstyle;";
于 2012-08-21T14:28:32.163 回答
0

这就是我在我的项目中所做的

CSS:

.tdonhover { background-color:#d9d9d9 !important; }

<script type="text/javascript">
        $(document).ready(function () {
         $('td').hover(function () {
                $('tr').each(function () {
                    $(this).removeClass('tdonhover');
                });
                $(this).parent().addClass('tdonhover');
            });
          });

    </script>

Default.aspx 页面:此页面包含gridview 控件。

               ` <asp:GridView ID="GridView1" runat="server" CellPadding="4" Width="940px" CssClass="gvClass gvalign" BorderColor="#E0DCD0" BorderStyle="Solid" BorderWidth="1px"
                       ForeColor="#333333" GridLines="None" >
                        <Columns>
                        <asp:TemplateField HeaderText="Srno" HeaderStyle-HorizontalAlign="Left" ItemStyle-Width="40">
                            <ItemTemplate>
                                <%# Container.DataItemIndex+1 %>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                    <FooterStyle BackColor="#5D7B9D" ForeColor="White" Font-Bold="True" />
                    <RowStyle ForeColor="#603813" BackColor="#F7F6F3" />
                    <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                    <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                    <HeaderStyle BackColor="#A86E07" Font-Bold="True" ForeColor="White" HorizontalAlign="Left" />
                    <EditRowStyle BackColor="#999999" />
                    <AlternatingRowStyle BackColor="White" ForeColor="#A86E07" />
                </asp:GridView>`

使用

<RowStyle ForeColor="#603813" BackColor="#F7F6F3" />
<AlternatingRowStyle BackColor="White" ForeColor="#A86E07" />

您可以设置备用行背景颜色和字体颜色

于 2012-08-13T11:04:00.173 回答
0

您可以使用 RowCreated 创建悬停效果,因为这需要回发。你应该在你的 CSS 中使用 hover 伪类。像这样的东西

.Gridview tr:hover
{
  background-color:blue;
  color:white;
}

Gridview css 类应用于您的 Gridview

于 2012-08-13T06:34:09.007 回答
0

这是很简单的事情。

在头部添加 CSS

#MainContent_gvDevice tr:Hover
{  
    background-color:#F6F6F6;
}

在这里而不是gvDevice把你的gridview id。

于 2013-01-29T06:21:27.700 回答
0

我认为我有迄今为止实施的最短和最简单的解决方案。无需编辑后面的代码或 id/类名称。您需要进行的唯一编辑是添加此 CSS:

tr[class^='dxgvDataRow']:hover td{ 
    background-color: #272727 !important;
}
于 2018-08-02T08:47:02.420 回答
0
 protected void grdDis_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {


            #region to highlight the grid view row 
            e.Row.Attributes.Add("onmouseover", "this.originalcolor=this.style.backgroundColor;" + " this.style.backgroundColor='#FDCB0A';");
            e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=this.originalcolor;");
            #endregion
}
}
于 2019-05-15T07:18:43.173 回答
0

这是用于带有 ToolTip 和 ForeColor 的 Gridview 中的列单元格悬停颜色

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        e.Row.Cells[2].Attributes["onmouseover"] = "this.style.cursor='pointer';this.style.textDecoration='underline';this.style.backgroundColor='aqua'";
        e.Row.Cells[2].Attributes["onmouseout"] = "this.style.textDecoration='none';this.style.backgroundColor='white'";
        e.Row.Cells[2].ToolTip = "You can click this cell";
        e.Row.Cells[2].ForeColor = System.Drawing.Color.Blue;
    }
}

谢谢

于 2019-12-11T12:41:50.850 回答
0

使用 OnRowCreated 处理鼠标悬停的更好方法

protected void RowCreated_report(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Attributes.Add("onmouseover", "this.originalstyle=this.style.backgroundColor;this.style.backgroundColor='yellow'");
                e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=this.originalstyle;");
                e.Row.Attributes.Add("style", "cursor:pointer;");
            }
}
于 2017-04-17T06:05:10.633 回答