作者:goxtop | 来源:互联网 | 2023-09-12 18:02
RowDataBound绑定某列,“是”为红色,否为蓝色,可是点击另外一个LinkButton后,颜色没了.点击旁边一个LinkButton之后,红,蓝颜色没了,回复到原来的颜色,怎么回事?
RowDataBound绑定某列,“是”为红色,否为蓝色,可是点击另外一个LinkButton后,颜色没了.
点击旁边一个LinkButton之后,红,蓝颜色没了,回复到原来的颜色,怎么回事?
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (e.Row.Cells[9].Text == "否")
{
e.Row.Cells[9].ForeColor = System.Drawing.Color.FromName("#0066CC");
}
else
{
e.Row.Cells[9].ForeColor = System.Drawing.Color.FromName("#EE3B3B");
}
}
}
9 个解决方案
这说明你的程序干了不该干的事情,多余地进行了绑定。
仅仅是简单地页面回发时,asp.net 自动回填页面上各种复杂控件的状态、重建子控件,并不需要你去重新查询数据、重新绑定。但是有些比较“坑”的博客上就让人一遍遍地去查询数据进行绑定(包括从什么 Session 集合里取数据重新绑定),这不但是浪费了巨大的时间,而且也会产生错误逻辑,因为此时根本不应该刷新控件状态,人家 asp.net 自动有 ViewState 恢复机制,不能让你给破坏掉。如果破坏掉,那么甚至连后续的一些控件的 xxxxChanged 事件也会丢失的!
“过与不及”,同样都会产生问题。而且过分了往往还不入当初什么都不会的时候。
比如说明明写5行代码就行了,但是你写了50行代码,那么你写的45行代码可能就是基于错误的机制而写的,就需要花费大量时间去纠错。多余的代码甚至造成你觉得需要用更多的冗余的代码去勉强“修复”问题。所以先搞明白原来的框架的底层内部开发机制,少写代码,才是真会写代码。
1)将linkbutton以及其影响的控件,放到updatepanel控件里面
2)取消页面数据缓存,请参考
http://blog.csdn.net/yanzhibo/article/details/21600681
没有任何多余的绑定啊, 刚刚发现,不仅仅是点击LinkButton会导致RowDataBound的绑定失效,而且只要是跟Row有关系的按钮,或者CheckBox等,都会对RowDataBound的绑定造成失效。不知道什么办?
CheckBox,将其ispostback设置为false,看看点击后还失效吗?
估计是因为回发引起的,任何触发后端的动作都会使之失效