新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > .Net开发 > Asp.net教程 > 正文:DataGrid中由某列的值设定行的颜色

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

新客网 XKER.COM 2004-09-12 来源: 收藏本文
今天真是的,又被界面搞的晕头转向.

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



收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐