GridView行的背景色,在触发事件后丢失

glyuhan 2011-03-04 03:30:57
我在GridView1_RowDataBound 里把每一行的背景色都设了,刷新出来后也正常。
我在GridView1里绑了个RadioButtonList,他的值是数据库查出来的。同时他有个SelectedIndexChanged方法,用来修改数据库的值。
但是一触发上面的方法。行的背景色值就都丢失了,全成了白色,行的文本颜色还是正常的
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
RadioButtonList rb = (RadioButtonList)e.Row.FindControl("rbDateType");
switch (rb.SelectedValue)
{
case "0":
e.Row.ForeColor = System.Drawing.Color.Black;
e.Row.BackColor = System.Drawing.Color.FromName("#E0E0E0 ");
break;
case "1":
e.Row.ForeColor = System.Drawing.Color.Blue;
e.Row.BackColor = System.Drawing.Color.FromName("#CCCCFF ");
break;
case "2":
e.Row.ForeColor = System.Drawing.Color.Red;
e.Row.BackColor = System.Drawing.Color.FromName("#CCCCFF ");
break;
default:
e.Row.ForeColor = System.Drawing.Color.Black;
e.Row.BackColor = System.Drawing.Color.FromName("#E0E0E0 ");
break;
}
}
}
换成 for (int i = 0; i < GridView1.Columns.Count; i++)
{
e.Row.Cells[i].BackColor = System.Drawing.Color.FromName("#E0E0E0 ");
}
也差不多,区别是赋的颜色丢了,变成默认色了
...全文
173 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
glyuhan 2011-03-07
  • 打赏
  • 举报
回复
会哦 绑定了一次后 就应该作为属性了
Airch 2011-03-07
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 glyuhan 的回复:]
啊哈哈哈,我终于发现为什么背景色会掉了
System.Drawing.Color.FromName("#E0E0E0") 自定义色居然不能保存为属性
只有系统色System.Drawing.Color.Blue才行。。。我把绑定的背景色都改成系统色 就没掉色的问题了
[/Quote]
字体颜色会自动保存?
glyuhan 2011-03-07
  • 打赏
  • 举报
回复
啊哈哈哈,我终于发现为什么背景色会掉了
System.Drawing.Color.FromName("#E0E0E0") 自定义色居然不能保存为属性
只有系统色System.Drawing.Color.Blue才行。。。我把绑定的背景色都改成系统色 就没掉色的问题了
Airch 2011-03-04
  • 打赏
  • 举报
回复
我也试了下,这样写背景颜色会消失,如果不重新绑定,那加个循环根据单选按钮组的值,重新设置下gridview行的颜色
glyuhan 2011-03-04
  • 打赏
  • 举报
回复
protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e)
{
string s = "";
RadioButtonList gRadioButtonList = (RadioButtonList)sender;
DataControlFieldCell dcf = (DataControlFieldCell)gRadioButtonList.Parent;
GridViewRow gvr = (GridViewRow)dcf.Parent;
RadioButtonList rb = (RadioButtonList)GridView1.Rows[gvr.RowIndex].FindControl("rbDateType");
string date = GridView1.Rows[gvr.RowIndex].Cells[1].Text;
s = "update Period set DateType='" + rb.SelectedValue + "' where SystemDate='" + date + "'";
s = WS.Dexecute(s);
switch (rb.SelectedValue)
{
case "0":
GridView1.Rows[gvr.RowIndex].ForeColor = System.Drawing.Color.Black;
GridView1.Rows[gvr.RowIndex].BackColor = System.Drawing.Color.FromName("#E0E0E0");
break;
case "1":
GridView1.Rows[gvr.RowIndex].ForeColor = System.Drawing.Color.Blue;
GridView1.Rows[gvr.RowIndex].BackColor = System.Drawing.Color.FromName("#CCCCFF ");
break;
case "2":
GridView1.Rows[gvr.RowIndex].ForeColor = System.Drawing.Color.Red;
GridView1.Rows[gvr.RowIndex].BackColor = System.Drawing.Color.FromName("#CCCCFF ");
break;
default:
break;
}
//QueryData(); 加上这个重新查询的话。。当然是可以的。。但是每个回传的事件都要加是不行的。。
}
Airch 2011-03-04
  • 打赏
  • 举报
回复
贴你单选按钮的方法代码
glyuhan 2011-03-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 airch 的回复:]
你以为是js啊,后台的去改变,你那是取的数据库的值,你……
[/Quote]

你该不会以为我是改变了某一行的值之后,这一行的颜色没变,这种问题吧。。。
我的问题是AutoPostBack了之后,所有的Row.BackColor的值都变成空了。。
Airch 2011-03-04
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 glyuhan 的回复:]
引用 10 楼 airch 的回复:

引用 9 楼 glyuhan 的回复:
引用 8 楼 airch 的回复:
晕,你的颜色改变只有在RowDataBand时间里处理,你不重新绑定会触发这个事件么?


我擦。。。我以为RowDataBand事件里设了背景色后,就成为行的背景属性了,那个文本颜色就是这样的嘛。
背景色要每次触发RowDataBand重新绑的?

你以为是js……
[/Quote]
你现在只是要实现选择单选按钮改变颜色而已撒,你只要单选的重新绑定啊,其他的为何要重新绑定?
glyuhan 2011-03-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 airch 的回复:]

引用 9 楼 glyuhan 的回复:
引用 8 楼 airch 的回复:
晕,你的颜色改变只有在RowDataBand时间里处理,你不重新绑定会触发这个事件么?


我擦。。。我以为RowDataBand事件里设了背景色后,就成为行的背景属性了,那个文本颜色就是这样的嘛。
背景色要每次触发RowDataBand重新绑的?

你以为是js啊,后台的去改变,你那是取的数据库的值,你……
[/Quote]
帅锅,每次执行完SelectedIndexChanged里的操作,就重新查询次,的确是可以达成效果。问题是页面里除了这个gridview里的RadioButtonList的回传事件,还有别的回传事件啊....例如下拉框什么的,我不能在每次事件里都加上一次重新查询啊...
Airch 2011-03-04
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 glyuhan 的回复:]
引用 8 楼 airch 的回复:
晕,你的颜色改变只有在RowDataBand时间里处理,你不重新绑定会触发这个事件么?


我擦。。。我以为RowDataBand事件里设了背景色后,就成为行的背景属性了,那个文本颜色就是这样的嘛。
背景色要每次触发RowDataBand重新绑的?
[/Quote]
你以为是js啊,后台的去改变,你那是取的数据库的值,你把值弄到数据库里,你要变颜色不重新绑定,颜色怎么变啊,
glyuhan 2011-03-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 airch 的回复:]
晕,你的颜色改变只有在RowDataBand时间里处理,你不重新绑定会触发这个事件么?
[/Quote]

我擦。。。我以为RowDataBand事件里设了背景色后,就成为行的背景属性了,那个文本颜色就是这样的嘛。
背景色要每次触发RowDataBand重新绑的?
Airch 2011-03-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 glyuhan 的回复:]
引用 5 楼 airch 的回复:

这样不行吧,你的RadioButtonList是在里面
除非你在点击的时候把数据库的值改了,并且在点击的事件里重新绑定可能会有效果


你意思是改了值之后,重新查询绑定次?貌似很影响性能啊....
[/Quote]
晕,你的颜色改变只有在RowDataBand时间里处理,你不重新绑定会触发这个事件么?
glyuhan 2011-03-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wxr0323 的回复:]

你的CheckBoxList事件里写代码了吗?

没写的话就将CheckBoxList的AutoPostBack属性设置false

设置成AutoPostBack="false"

或者直接拖UpdatePanel哈哈
[/Quote]
拖UpdatePanel 是啥效果? 我去试试。事件里肯定写代码哇,要同时修改数据库值的,AutoPostBack=TRUE
glyuhan 2011-03-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 airch 的回复:]

这样不行吧,你的RadioButtonList是在里面
除非你在点击的时候把数据库的值改了,并且在点击的事件里重新绑定可能会有效果
[/Quote]

你意思是改了值之后,重新查询绑定次?貌似很影响性能啊....
Airch 2011-03-04
  • 打赏
  • 举报
回复
这样不行吧,你的RadioButtonList是在里面
除非你在点击的时候把数据库的值改了,并且在点击的事件里重新绑定可能会有效果
unicode 2011-03-04
  • 打赏
  • 举报
回复
回传了吧,禁止回传试试
子夜__ 2011-03-04
  • 打赏
  • 举报
回复
你的CheckBoxList事件里写代码了吗?

没写的话就将CheckBoxList的AutoPostBack属性设置false

设置成AutoPostBack="false"

或者直接拖UpdatePanel哈哈
alan_219_2008 2011-03-04
  • 打赏
  • 举报
回复
点击后断点看一下

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧