在数据网格视图中向用户显示错误
本文关键字:用户 显示 错误 视图 数据 数据网 网格 | 更新日期: 2023-09-27 18:25:16
>基本上我有一个绑定到DataGridView的数据表。我想发生的是,如果某些异常为真,则在数据网格中的每个单元格中显示错误类型工具提示。
我已经能够使用单元格验证在单元格中显示的红色错误警报。问题是用户必须单击一个单元格,然后将该单元格从焦点中移开,警报才会可见。
我还尝试在数据表上使用列更改来设置 RowError,但这根本不起作用。这是我尝试过的一些示例代码。
importGrid
是我的DataGridView
, csvData
是我的DataTable
private void importGrid_CellValidating(object sender,
DataGridViewCellValidatingEventArgs e)
{
this.importGrid.Rows[e.RowIndex].Cells[e.ColumnIndex].ErrorText ="Drive Letter in use";
}
private void csvData_ColumnChanging(object sender,
System.Data.DataColumnChangeEventArgs e)
{
e.Row.RowError = "test error";
e.Row.SetColumnError(e.Column, "test error 2");
}
为什么不遍历绑定后的所有Rows
和Cells
,测试条件并设置ErrorText
?
foreach(DataGridViewRow row in DGV.Rows)
foreach(DataGridViewCell cell in row.Cells)
if (yourCondition) cell.ErrorText = yourErrorText;
有两个
事件可能会对您有用。 RowErrorTextNeeded
和CellErrorTextNeeded
.这是我使用RowErrorTextNeeded
的一个项目的示例。当行变得可见或发生任何更改时,DataGridView
将触发此事件。
private void dataGridView1_RowErrorTextNeeded( object sender, DataGridViewRowErrorTextNeededEventArgs e )
{
DataGridView dataGridView = sender as DataGridView;
if( dataGridView != null )
{
DataRowView view = dataGridView.Rows[e.RowIndex].DataBoundItem as DataRowView;
if( view != null )
{
if( view.Row[invColorColumn] == DBNull.Value )
e.ErrorText = "Color code is missing from part database.";
else if( view.Row[invThickColumn] == DBNull.Value )
e.ErrorText = "Thickness is missing from part database.";
else if( view.Row[invWidthColumn] == DBNull.Value )
e.ErrorText = "Width is missing from part database.";
else if( view.Row[invHeightColumn] == DBNull.Value )
e.ErrorText = "Height is missing from part database.";
else
e.ErrorText = String.Empty;
}
}
}