.Net Gridview восстанавливает чередующийся цвет после наведения мыши - PullRequest
3 голосов
/ 04 января 2011

У меня есть gridview с установленным свойством alternatingRowStyle.

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataSourceID="SqlDataSource2" OnRowDataBound="GridView1_RowDataBound"
        onselectedindexchanged="GridView1_SelectedIndexChanged" AlternatingRowStyle-BackColor="#f0f1f3">

Я также хочу выделить строки при перемещении курсора с помощью этого:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)  
{  
        if (e.Row.RowType == DataControlRowType.DataRow)  
        {  
            e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#ceedfc'");  
            e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=''");  
            e.Row.Attributes.Add("style", "cursor:pointer;");

Проблема, с которой я столкнулся, заключается в том, что, когда мышь перемещается мимо строки, она восстанавливается белым, а не предыдущим цветом, который отличается в половине строк. Я предполагал, что смогу сохранить текущий цвет строки перед заменой его для каждого события «onmouseove», но это кажется дорогим и беспокоящим, если быстрое движение мыши может испортить ситуацию.

Я не вижу свойства для строк gridview, чтобы сказать мне, является ли это альтернативной строкой, но было бы лучше просто нечетное / четное определение для индекса строки?

Какие-нибудь лучшие предложения?

Спасибо.

* 1015 Дан *

Ответы [ 3 ]

6 голосов
/ 04 января 2011

Магазин оригинального стиля. Затем установите стили backgroundColor на this.originalstyle.

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)  
{  
        if (e.Row.RowType == DataControlRowType.DataRow)  
        {  
            e.Row.Attributes.Add("onmouseover", "this.originalstyle=this.style.backgroundColor;this.style.backgroundColor='#ceedfc'");  
            e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=this.originalstyle");  
            e.Row.Attributes.Add("style", "cursor:pointer;");
1 голос
/ 23 февраля 2011

Я предпочитаю использовать CSS для наведения цвета

tr.odd {
  background-color: White;
}
tr.even {
  background-color: #f8f8f8;
}
tr.odd:hover {
  background-color: #f3fcfa;
}
tr.even:hover {
  background-color: #ebf3f1;
}
0 голосов
/ 24 октября 2012

Использование JQuery:

$(document).ready(function ()
{
    var original = "";

    $("#<%=yourGridViewNameHere.ClientID%> tr:has(td)").hover(function ()
    {
        original = $(this).css("background-color");

        $(this).css("background-color", "Pink");
    }, function ()
    {
        $(this).css("background-color", original);
    });
});

Исходный ответ, который я получил от здесь , я просто немного подправил его для своих нужд, как показано выше.

Наслаждайтесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...