我在发票中有一个项目的gridview。我实现了一个代码,用于在网格外的文本框中接收条形码编号。现在,如果扫描的项目是新的,则将其添加到网格视图中。但如果它已经存在,程序会将项目数量增加一个。
问:如何突出显示(或着色)受影响的行(数量增加1的行)?
答案 0 :(得分:0)
DevExpress为其RowStyle
提供RowCellStyle
和GridView
个事件。
在每个事件中,您都可以检查当前样式的行或单元格的状态,并根据行中的数据更改其外观。
您可以向表中添加隐藏的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;
}