C# 从网格视图外部修改时,Devexpress网格视图会更改行背景色

C# 从网格视图外部修改时,Devexpress网格视图会更改行背景色,c#,gridview,devexpress,devexpress-windows-ui,C#,Gridview,Devexpress,Devexpress Windows Ui,我有发票中项目的网格视图。我实现了一个代码来接收网格外文本框中的条形码编号。现在,如果扫描的项目是新的,它将添加到网格视图中。但是如果它已经存在,程序会将该项目的数量增加一个 问:如何突出显示(或着色)受影响的行(数量增加1的行) DevExpress为其GridView提供RowStyle和RowCellStyle事件 在每个事件中,您都可以检查当前已设置样式的行或单元格的状态,并根据行中的数据更改其外观 您可以向表中添加一个隐藏的布尔字段,用于跟踪最近更改的行。在扫描新条形码之前,您只需将所

我有发票中项目的网格视图。我实现了一个代码来接收网格外文本框中的条形码编号。现在,如果扫描的项目是新的,它将添加到网格视图中。但是如果它已经存在,程序会将该项目的数量增加一个


问:如何突出显示(或着色)受影响的行(数量增加1的行)

DevExpress为其
GridView
提供
RowStyle
RowCellStyle
事件

在每个事件中,您都可以检查当前已设置样式的行或单元格的状态,并根据行中的数据更改其外观

您可以向表中添加一个隐藏的布尔字段,用于跟踪最近更改的行。在扫描新条形码之前,您只需将所有行的此字段设置为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\u行样式(对象发送方,DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)
{
如果(e.RowHandle<0)返回;
GridView视图=发送方作为GridView;
DataRowView rowView=(DataRowView)view.GetRow(e.RowHandle);
如果((bool)行视图[“LastChanged”])
e、 外观.背景色=颜色.黄色;
其他的
e、 外观.背景色=颜色.白色;
}
或者,如果您只想为“数量”单元格着色

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;
}
private void gridView\u RowCellStyle(对象发送方,DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
{
如果(e.RowHandle<0)返回;
如果(e.Column.Name!=“金额”)返回;
DataRowView rowView=(DataRowView)((GridView)sender.GetRow(e.RowHandle));
如果((bool)行视图[“LastChanged”])
e、 外观.背景色=颜色.黄色;
其他的
e、 外观.背景色=颜色.白色;
}

您可以使用DataRowState属性,也可以使用另一个列QuantityChanged boolean并使用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;
}

您是否有一些代码要共享,以便我们了解网格和文本框的外观?你自己做了什么?