在数据网格视图中向用户显示错误

本文关键字:用户 显示 错误 视图 数据 数据网 网格 | 更新日期: 2023-09-27 18:25:16

>基本上我有一个绑定到DataGridView的数据表。我想发生的是,如果某些异常为真,则在数据网格中的每个单元格中显示错误类型工具提示。

我已经能够使用单元格验证在单元格中显示的红色错误警报。问题是用户必须单击一个单元格,然后将该单元格从焦点中移开,警报才会可见。

我还尝试在数据表上使用列更改来设置 RowError,但这根本不起作用。这是我尝试过的一些示例代码。

importGrid是我的DataGridViewcsvData是我的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");
}

在数据网格视图中向用户显示错误

为什么不遍历绑定后的所有RowsCells,测试条件并设置ErrorText

foreach(DataGridViewRow row in DGV.Rows)
foreach(DataGridViewCell cell in row.Cells) 
    if (yourCondition) cell.ErrorText = yourErrorText;
有两个

事件可能会对您有用。 RowErrorTextNeededCellErrorTextNeeded .这是我使用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;
        }
    }
}