.NET Tips : DataGrid中由某列的值设定行的颜色

原创 2004年09月04日 17:44:00

今天真是的,又被界面搞的晕头转向.

为了实现.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);

datagrid加载数据,列内容显示,改变字体颜色

//1.加载数据  列内容显示蓝色字体 #region 加载数据  列内容显示蓝色字体 //代码出自:三项工作--项目管理系统--项目管理--项目变更--采购方式变更申请 //页面路径:Ope...
  • qq_25409579
  • qq_25409579
  • 2016年01月11日 11:01
  • 2466

改变DataGrid单元格颜色

WPF中经常使用DataGrid来显示表格数据,我的做法是把数据先放在一个DataTable中,然后再绑定到DataGrid中,以后要读写数据就直接操作DataTable,DataGrid仅仅是一个显...
  • falcomavin
  • falcomavin
  • 2016年06月24日 11:19
  • 2967

Easyui 去掉datagrid 行的样式,并点击checked 改边行颜色!

标签: --最近客户提出的需求 全选高亮样式太丑,每行选中不需要背景图片颜色,字体变黑色,未选中变灰色。 先把代码和改变后的图片 贴出来。   /* 初始化DataFrid数据 */ ...
  • zhpengfei0915
  • zhpengfei0915
  • 2016年03月31日 15:51
  • 1939

asp.net中显示DataGrid控件列序号的几种方法

asp.net中显示DataGrid控件列序号的几种方法 收藏 在aps.net中多数据绑定的控件很多,论功能来说,应该属DataGrid最为齐全,但它没有提供现成的显示记录序号的功能,不过我们可以通...
  • weichendahai
  • weichendahai
  • 2011年03月13日 22:47
  • 327

Asp.Net使用Easy UI DataGrid 实现行过滤[行模糊查询数据]

在使用Easy UI datagrid 列表控件时,对列表数据的查询需要自己写查询页面,然后点击按钮查询取到数据刷新datagrid,如何说直接在datagrid列表上面对列表上面的某一列进行数据查询...
  • shechaojin
  • shechaojin
  • 2016年05月25日 15:47
  • 2432

ASP.NET Aries 入门开发教程7:DataGrid的行操作(主键操作区)

前言: 抓紧勤奋,再接再励,预计共10篇来结束这个系列。 上一篇介绍:ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑 本篇介绍主键操作区相关内容。 1:什么时候有默认...
  • cyq1162
  • cyq1162
  • 2016年11月23日 12:19
  • 460

GridView/DataGrid行单击和双击事件实现代码_.Net教程

功能: 单击选中行,双击打开详细页面
  • CodeSection
  • CodeSection
  • 2016年12月17日 11:22
  • 208

ASP.NET DataGrid 冻结头列

  • 2013年10月24日 16:50
  • 1.67MB
  • 下载

asp.net 鼠标移入Repeater某一行时改变颜色并且checkbox列被选中

/*被选中*/ function OnCheck(event) { var obj = event.srcElement ? event.srcElement ...
  • taomanman
  • taomanman
  • 2011年09月17日 21:40
  • 1597

.NET 若干tips

1、using 的作用只是简化代码(在引用类时省略命名空间),引用一个类时,必须将其所在的dll文件加入项目的引用。只有添加引用后,IntelliSense工具才会起作用。 方法:项目→添加引用 ...
  • itaratss
  • itaratss
  • 2011年12月13日 17:52
  • 238
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.NET Tips : DataGrid中由某列的值设定行的颜色
举报原因:
原因补充:

(最多只允许输入30个字)