我想向用户显示网格中哪一行出错,更新或插入。
网格以前管理过所有行和列,但是我正在更改它,所以它都是用sqlAdapter(dataTables)创建/填充的。
所以...我可以看到一行是否有错误或已被插入...但是通过DataRow,例如:
usrGrdPieces.getGrid.DataSource.DataSource.GetChanges()
但是这只给了我绑定网格的dataSet,而不是网格的实际行。 我不知道如何显示这些行的细节。
之前有一个添加的列,其中有一个图像用于行coulb所处的每个状态,是否可以使用bindingSource生成的网格进行处理?
或者,如果可能只是将绿色/红色的细胞或行变暗,我也会感到高兴...
感谢任何可以提供帮助的人!
答案 0 :(得分:1)
您可以通过行的DataBoundItem将数据绑定到数据表的网格中的行到达DataRow。
例如,假设我要突出显示已添加的绿色行和使用DataRow对象上的DataRowState属性修改的橙色行。您可以在列中显示图像而不是背景颜色。错误状态不是存储在数据行中的东西,因此根据您的意思,您必须进行其他检查。出于这个例子的目的,假设有一个名为“Name”的列应该是50个字符或更少。如果它不止于此,我将突出显示红色的行,通常我会使用单元格/行的“ErrorText”属性来表示存在错误,但我会坚持使用此示例的颜色。< / p>
我会处理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;
}
}