您可以通过行的 DataBoundItem 获取网格中数据绑定到数据表的行的 DataRow。
例如,假设我想突出显示已添加的绿色行和使用 DataRow 对象上的 DataRowState 属性修改的橙色行。您可以做同样的事情来在列中显示图像而不是背景色。错误状态不是存储在数据行中的东西,因此根据您的意思,您必须进行额外的检查。出于本示例的目的,假设有一个名为“名称”的列,它应该是 50 个字符或更少。如果不止于此,我将用红色突出显示该行,通常我会使用单元格/行的“ErrorText”属性来表示存在错误,但我将坚持使用此示例的颜色。
我将处理 CellFormatting 事件(我用 C# 编写了这个,因为我更熟悉它,但属性/概念在 VB 中是相同的)。
dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
DataGridView grid = (DataGridView) sender;
DataRowView currentRowView = (DataRowView) grid.Rows[e.RowIndex].DataBoundItem;
DataRow currentRow = (DataRow)currentRowView.Row;
string name = currentRow["Name"].ToString();
if (name.Length > 50)
{
grid.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Red;
}
else if (currentRow.RowState == DataRowState.Added)
{
grid.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Green;
}
else if (currentRow.RowState == DataRowState.Modified)
{
grid.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Orange;
}
}