2012-01-30 4 views
0

У меня есть gridview с некоторыми данными, связанными с ним. У меня также есть другой фон для чередующихся строк, поэтому таблица более читабельна ... Как изменить цвет фона строки при установке флажка в первом столбце и изменить его обратно на оригинал, когда он не установлен. Проблема, с которой я столкнулась, заключается в том, как узнать, является ли исходный фон (после снятия флажка) для обычной строки или для чередующейся строки?change gridview color when checkbox selected

Я знаю, как изменить строку атрибутов, как это:

protected void gvUser_OnRowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == System.Web.UI.WebControls.DataControlRowType.DataRow) 
    { 
     e.Row.Attributes.Add("onmouseover", "this.originalstyle=this.style.backgroundColor;this.style.backgroundColor='#D9ECFB'"); 
     e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=this.originalstyle;"); 
    } 
} 

Но что, если есть больше флажков выбранные, как я знаю, что оригинальный фон?

ответ

1

Я дам решение jQuery, и я надеюсь, вам понравится. Я здесь, чтобы найти все флажки, которые находятся внутри элемента управления GridView, а затем, когда вы нажмете на один из них, я получаю полную строку и меняю цвет, но сохраняя старый, чтобы вернуть его. Только одна нота, вы должны поместить в строках стиль .row

function InitTheChecks() 
{ 
    var updateButtons = jQuery('#<%=GridView.ClientID%> input[type=checkbox]'); 

    updateButtons.each(function(){ 
     jQuery(this).attr('onclick', null).click(function() 
     { 
      var ThisCheckBox = jQuery(this); 

      if(ThisCheckBox.is(':checked')) 
      { 
       ThisCheckBox.attr('oldBackColor', ThisCheckBox.parents(".row").css("background-color")); 
       ThisCheckBox.parents(".row").css("background-color", "#FFD8CE"); 
      } 
      else 
      { 
       ThisCheckBox.parents(".row").css("background-color", ThisCheckBox.attr('oldBackColor')); 
      } 
     }); 
    });  
}  

и запустить InitTheChecks() OnPage нагрузки.

how to know if original background 

Чтобы ответить на этот вопрос, что я делаю то, что я помещаю старый цвет в атрибуте в теге, прежде чем изменить его, что-то вроде хранителя памяти :)

0
This worked for me. 

private void setrowcolor() 
    { 
     bool checkSelected = false; 
     foreach (DataGridViewRow row in gridgencsv.Rows) 
     { 
      checkSelected =Convert.ToBoolean(row.Cells["select_check"].Value); 
      if (checkSelected == true) 
       { 
        row.DefaultCellStyle.BackColor = System.Drawing.Color.CadetBlue; 
       } 
      else 
       { 
        row.DefaultCellStyle.BackColor = System.Drawing.Color.White; 
       } 

     } 
    }