как сохранить orgianl backgroundColor при наведении курсора мыши?

#asp.net #gridview

#asp.net #просмотр сетки

Вопрос:

ниже приведен код, который работает нормально, но единственная проблема, с которой я сталкиваюсь, заключается в следующем: он переопределяет альтернативную строку backgroundColor='white' как я могу иметь свой оригинальный альтернативный цвет при включении?

 <AlternatingRowStyle BackColor="#DEEEE9" Font-Size="8pt" />

if (e.Row.RowType == DataControlRowType.DataRow)
{
    e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#C2D69B'");
    e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='white'");
    e.Row.Attributes.Add("style", "cursor:pointer;");
}
  

Ответ №1:

Вы можете указать, какой именно цвет должен быть восстановлен на onmouseout :

 if (e.Row.RowType == DataControlRowType.DataRow)
{
    string bgcolor = "white"
    if (e.Row.RowState == DataControlRowState.Alternate)
    {
       bgcolor = "#DEEEE9";
    }

    e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#C2D69B'");
    e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='"   bgcolor    "'");
    e.Row.Attributes.Add("style", "cursor:pointer;");
}
  

Комментарии:

1. почему вы сделали бы это вместо того, чтобы использовать то, что встроено в функциональность таблицы стилей. Классы Css даже предоставляют для этого функциональность с помощью элемента hover .

Ответ №2:

Я не понимаю, почему бы просто не удалить «e.Row.Attributes.Добавить(«onmouseout», «this.style.backgroundColor=’white'»);» и установить для него цвет исходного альтернативного???

Комментарии:

1. затем цвет выделения останется и не вернется обратно, пока не будет наведен курсор мыши на другую строку. Он показывает «выбранный», когда на самом деле это было просто наведение курсора.

Ответ №3:

вместо указания определенного цвета используйте css-атрибуты hover. Смотрите: http://www.codeproject.com/KB/webforms/MouseHoverUsingCSS.aspx

Ответ №4:

Попробуйте что-то вроде этого:

 var color = "<%=System.Drawing.ColorTranslator.ToHtml(GridView1.AlternatingRowStyle.BackColor)%>";
  

Ответ №5:

Это хорошо работает с гораздо меньшим количеством кода. Создайте пользовательский атрибут при наведении курсора мыши перед установкой backgroundColor и используйте его при наведении курсора мыши. Отлично работает для чередования цветов строк.

 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;";