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

时间:2017-01-19 21:50:12

标签: c# gridview devexpress devexpress-windows-ui

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

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

2 个答案:

答案 0 :(得分:0)

DevExpress为其RowStyle提供RowCellStyleGridView个事件。

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

您可以向表中添加隐藏的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;
}

或者,如果您只想为Amount单元格着色。

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;
}

答案 1 :(得分:0)

您可以使用DataRowState属性,或者您将使用另一个colum QuantityChanged布尔值,您将使用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;
}