选中复选框后更改gridview颜色

时间:2012-01-30 19:06:44

标签: c# asp.net 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;");
    }
}

但是,如果选择了更多复选框,我怎么知道哪个是原始背景?

2 个答案:

答案 0 :(得分: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 

要回答这个问题,我所做的是在更改之前将旧颜色放在标签上的属性中,就像记忆管理员一样:)

答案 1 :(得分: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;
              }

        }
   }