2012-01-30 177 views
0

我有一個gridview綁定了一些數據。對於交替行,我也有不同的背景,所以表格更具可讀性......當選中第一列中的複選框時,如何更改行背景的顏色,並在未選中時將其更改回原始。我遇到的問題是,如何知道原始背景(取消選中複選框後)是用於普通行還是用於交替行?當選中複選框時更改gridview顏色

我知道如何更改行屬性是這樣的:

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

     } 
    } 
相關問題