我有一个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;");
}
}
但是,如果选择了更多复选框,我怎么知道哪个是原始背景?
答案 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;
}
}
}