这是我现在正在做的事情。
private void gvOrderList_RowStyle(object sender, RowStyleEventArgs e)
{
GridView View = sender as GridView;
if (e.RowHandle >= 0)
{
string sGridRecordOrderNumber = View.GetRowCellDisplayText(e.RowHandle, View.Columns["orderNo"]);
foreach (string sNewRecordOrderNo in oNewRecordOrderNoList)
{
if (sGridRecordOrderNumber == sNewRecordOrderNo)
{
e.Appearance.BackColor = Color.Salmon;
e.Appearance.BackColor2 = Color.SeaShell;
break;
}
}
}
}
我使用线程每 30 秒触发一次 sql 查询,并将数据源作为列表。 oNewRecordOrderNoList 包含我的新记录列表。我正在将其 OrderNo 列与句柄的同一列匹配以获得突出显示的行。
我按预期突出显示了我的行,但也在我的网格控制上获得了 1 秒的大交叉。如果我在当前表单之后打开其他表单,它还会在其他表单中显示交叉。看起来很丑。
我想要一个解决方案来删除这个十字或其他解决方案,通过它我可以通过匹配列值来更改新行的外观,而无需交叉显示。
帮助将不胜感激。
红叉表示绘制网格时发生异常。由于您要更改数据源,因此最好在加载数据之前延迟突出显示。像这样:
private void LoadData() {
myGridView.BeginDataUpdate();
myGridControl.DataSource = GetNewDataSource();
myGridView.EndDataUpdate();
}