注册
 找回密码
 注册
江西广告网
查看: 258|回复: 0
打印 上一主题 下一主题

DataGrid 中由某列的值设定行的颜色

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2008-12-24 11:59:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
  为了实现.Net window DataGrid 的某一行可以根据该行某列的值的内容设定该行颜色的功能.      先贴一个连接,里面有DataGrid很多功能扩充的解决方案Windows Forms Datagrid      不过没有我这个需求的解决方案,最后终于还是在同事的帮助下搞定了.      由某一个单元格的值设定该单元格的颜色的实现我就不贴了,上面的连接里面有解决方案.   下面是由某列的值设定整行颜色的一个解决方案. 关键是在定制的DataGridTextBoxColumn里面添加一个DataView的属性,另外重载Paint() .   在使用DataGridTextBoxColumn的时候,将DataGrid绑定的DataView赋值给它.      public class public class DataGridColoredTextBoxColumn : DataGridTextBoxColumn   {   private System.Data.DataView m_bindDataView;   public DataView BindingDataView   {   get   {   return m_bindDataView;   }   set   {   m_bindDataView = value;   }   }      protected override void Paint(System.Drawing.Graphics g,   System.Drawing.Rectangle bounds, System.Windows.Forms.CurrencyManager   source, int rowNum, System.Drawing.Brush backBrush, System.Drawing.Brush   foreBrush, bool alignToRight)   {   // the idea is to conditionally set the foreBrush and/or backbrush   // depending upon some crireria on the cell value   // Here, we color anything that begins with a letter higher than 'F'   try   {   //从DataView中取值,"ItemType"为行的名称   string colValue = this.BindingDataView[rowNum]["ItemType"].ToString();   char val = colValue[0];      if( val > 'F' ) //如果首字母大于 'F'   {   backBrush = new SolidBrush(Color.BlueViolet );   foreBrush = new SolidBrush(Color.White);   }   }   catch(Exception ex)   {   //empty catch   }   finally   {   // make sure the base class gets called to do the drawing with   // the possibly changed brushes   base.Paint(g, bounds, source, rowNum, backBrush, foreBrush, alignToRight);   }   }      }      使用的例子   DataGridColoredTextBoxColumn colExceptionType = new DataGridColoredTextBoxColumn();   colItemType.BindingDataView = dtOrderItem.DefaultView; //将table的view赋值   colItemType.HeaderText =“ItemType”;   colItemType.MappingName = “ItemType“;   colItemType.Width = 90;   colItemType.NullText = "";   tablestyle.GridColumnStyles.Add(colItemType);       <
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表