DataGrid中由某列的值設定行的顏色

來源:互聯網
上載者:User
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);





相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。