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

datagrid

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

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

时间: 2024-11-08 19:45:14

DataGrid中由某列的值设定行的颜色的相关文章

在ASP.NET中访问DataGrid中所有控件的值

asp.net|datagrid|访问|控件 要在ASP.NET中访问DataGrid中所有控件的值,可以遍历DataGrid中每个控件:下面就是实现这一功能的aspx代码和脚本代码[VB.NET]: <%@ Page Language="vb" AutoEventWireup="false" Codebehind="DataGridAccessValues.aspx.vb" Inherits="aspxWeb.DataGridA

JavaScript获取table中某一列的值的方法_javascript技巧

1.实现源码 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-eq

Rdlc报表中某一列的值合并显示在一个单元格中

问题描述 做了一个报表,并且进行了分组,想实现以下功能:单位XX等级XXa编号bcd日期XXX上面是我可以实现的下面是我想实现的单位XX等级XX编号a,b,c,d日期XXX环境:数据源绑定,list本组分页.简单的点说就是能不能把table表中的一列的值合并显示在一个单元格,并且不影响分页效果 解决方案 解决方案二:不是吧?自己做沙发?????解决方案三:建议你在数据源上面下手,我们之前都是把数据当行来对待,然后分组.再分组:解决方案四:这个我建议在后台数据源集合进行操作后再赋值到页面上来

javascript-如何用js替换掉table中某一列的值?

问题描述 如何用js替换掉table中某一列的值? 解决方案 ID Name 1 a 2 c <script src="jquery-1.7.1.min.js"></script> <script> window.onload = function () { $("table").find(".name").html("b"); } </script> 你可以试试,我理解的你应该

datagridview-将dataGridView1中某一列的值赋给一个数组

问题描述 将dataGridView1中某一列的值赋给一个数组 System.Collections.ArrayList s1 = new System.Collections.ArrayList(); for (int i = 0; i < dataGridView1.Rows.Count; i++)//循环dataGridView1的行 { s1.Add(dataGridView1.Rows[i].Cells[0].Value.ToString ());//将dataGridView1中的第

如何计算jtable中某一列所有值的和

问题描述 如何计算jtable中某一列所有值的和,急 解决方案 解决方案二:利用jtable获取到那一列,然后循环那一列,取每行值,求和

easyui datagrid中关于编辑列保存问题

问题描述 针对DataGrid中某一列可以进行编辑,然后编辑完可以可以一行行把它更新到数据库中去,目前这个保存不知道要怎么写? 解决方案 解决方案二:官网有实例vareditIndex=undefined;functionendEditing(){if(editIndex==undefined){returntrue}if($('#dg').datagrid('validateRow',editIndex)){vared=$('#dg').datagrid('getEditor',{index:

DataGrid中的模板列

问题描述 使用DataGrid中的模板时出问题了!我在模板列的ItemTemplate中使用了CheckBox控件;CheckBox中的AuotPostback改了TRUE(我想当CheckBox被选时,我要使这一行其他的模板列或绑定列成为编辑状态)但是不知道怎么写!希望哥哥姐姐门能帮我解决!谢谢! 解决方案 解决方案二:www.componentart.com你来这个网站看看他的控件.

JavaScript实现DataGrid中添加CheckBox列

datagrid|javascript (一).功能     1. JavaScript检索CheckBox并实现全选和全消功能          用C#等写的CheckBox需要回发到服务端执行,         而用JavaScript可以在直接客户端实现,效率高些 (二).代码 1. DataGrid中的代码主要片段:   <Columns>    <HeaderTemplate>       //头模板代码    <asp:CheckBox id="chkH