首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请问DataGrid超标数据,设置成红色有关问题

2012-01-26 
请教DataGrid超标数据,设置成红色问题请朋友们看一下这个代码有什么问题.以下代码的功能是:把超标的数据设

请教DataGrid超标数据,设置成红色问题
请朋友们看一下这个代码有什么问题.
以下代码的功能是:把超标的数据设置成红色.
private   static   double[,]   markValues   =   new   double[20,2];//保存各个指标的上限和下了限.
private   static   string[]   markTips   =   new   string[20];//保存各个指标的上限和下了限及参数的名称,做为一个各个指标的提示.
markValues,markTips   中的值在页面第一次加载时赋值.

以下是查出数据时执行的代码.

foreach(DataGridItem   item   in   DG_PAGE.Items)
                        {
                                if(item.ItemType   ==   ListItemType.Item   ||   item.ItemType   ==   ListItemType.AlternatingItem)
                                {
                                        Label[]   labels   =   new   Label[20];
                                        labels[0]   =   (Label)item.FindControl( "ii_rt ");
                                        labels[1]   =   (Label)item.FindControl( "ii_yt ");
                                        labels[2]   =   (Label)item.FindControl( "ii_rhumidity ");
                                        labels[3]   =   (Label)item.FindControl( "ii_yhumidity ");
                                        labels[4]   =   (Label)item.FindControl( "ii_rvt ");
                                        labels[5]   =   (Label)item.FindControl( "ii_yvt ");
                                        labels[6]   =   (Label)item.FindControl( "ii_r2vt ");
                                        labels[7]   =   (Label)item.FindControl( "ii_y2vt ");
                                        labels[8]   =   (Label)item.FindControl( "ii_r1t ");
                                        labels[9]   =   (Label)item.FindControl( "ii_r2t ");
                                        labels[10]   =   (Label)item.FindControl( "ii_y1t ");
                                        labels[11]   =   (Label)item.FindControl( "ii_y2t ");


                                        labels[12]   =   (Label)item.FindControl( "ii_r1p ");
                                        labels[13]   =   (Label)item.FindControl( "ii_r2p ");
                                        labels[14]   =   (Label)item.FindControl( "ii_y1p ");
                                        labels[15]   =   (Label)item.FindControl( "ii_y2p ");
                                        labels[16]   =   (Label)item.FindControl( "ii_r1h ");
                                        labels[17]   =   (Label)item.FindControl( "ii_r2h ");
                                        labels[18]   =   (Label)item.FindControl( "ii_y1h ");
                                        labels[19]   =   (Label)item.FindControl( "ii_y2h ");
                                        for(int   i=0;i <labels.Length;i++)
                                        {
                                                double   realValue   =   Convert.ToDouble(labels[i].Text);
                                                  if(realValue   <   markValues[i,0]   ||   realValue   >   markValues[i,1])
                                                  {
                                                        labels[i].CssClass   =   "RedFont ";
                                                  }
                                                  labels[i].Attributes.Add( "title ",markTips[i]);
                                        }                    


                                }

存在的问题是:
1.在我的电脑和公司的其它的几台电脑上是正常的,可以看到超标的数据是红色.
2.同样的代码在客户的电脑上,显示的效果是有的超标数据是黑色,有的未超标数据是红色,并且是不规则的,一般来说红色是成片出现的,也就是显示颜色不正常的不是一两个数据,而是一片数据都是显示红色,其实这些数据未超标或只有一两个超标.

想请教一下这样的问题可能是什么原因?


[解决办法]
有可能是static变量的问题,debug跟踪一下,看看输出的值是什么

其实可以采取绑定来设置item的颜色。
[解决办法]
ref:
http://topic.csdn.net/t/20050817/08/4213082.html
[解决办法]
很可能是static并发引起的.

测试步骤如下:
1.先不使用static,每次使用都重新赋值,看问题是否还存在,如果正常了,可以确认是static造成.
solution:
a:每次使用该static数组时 lock{}起来.

[解决办法]
B/S系统一定要谨慎使用static,一般来说只有对于每个client每个时刻都使用的恒定值时才使用.


热点排行