[英]Devexpress gridview change row background color when modified from outside the grid view
我有一張發票中的項目的gridview。 我實現了一個代碼,以在網格外部的文本框中接收條形碼編號。 現在,如果掃描的項目是新項目,它將被添加到網格視圖中。 但是,如果程序已經存在,則程序會將其數量增加一倍。
問:如何突出顯示(或着色)受影響的行(數量增加一的行)?
DevExpress為GridView
提供RowStyle
和RowCellStyle
事件。
在每種情況下,您都可以檢查當前樣式化的行或單元格的狀態,並根據行內的數據更改其外觀。
您可以在表中添加一個隱藏的bool字段,以跟蹤LastChanged行。 在掃描新的條形碼之前,您可以將所有行的此字段都設置為false,而僅將其金額已更改的行設置為true。
然后,您可以使用以下事件處理程序之一來根據數據設置行或單元格的樣式:
private void gridView_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)
{
if (e.RowHandle < 0) return;
GridView view = sender as GridView;
DataRowView rowView = (DataRowView) view.GetRow(e.RowHandle);
if ((bool)rowView["LastChanged"])
e.Appearance.BackColor = Color.Yellow;
else
e.Appearance.BackColor = Color.White;
}
或者,如果您只想為“數量”單元格上色。
private void gridView_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
{
if (e.RowHandle < 0) return;
if (e.Column.Name != "Amount") return;
DataRowView rowView = (DataRowView)(((GridView)sender).GetRow(e.RowHandle));
if ((bool)rowView["LastChanged"])
e.Appearance.BackColor = Color.Yellow;
else
e.Appearance.BackColor = Color.White;
}
您可以使用DataRowState屬性,或者將具有另一個columnQuantityChanged布爾值,並且將使用RowCellStyle事件
private void gridView1_RowCellStyle(object sender, RowCellStyleEventArgs e) {
GridView view = sender as GridView;
qChanged = Convert.ToBoolean(view.GetRowCellDisplayText(e.RowHandle, View.Columns["QuantityChanged "]));
if (qChanged == true)
e.Appearance.BackColor = Color.Red;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.