如何:在列更改过程中验证数据

验证数据是检查输入到应用程序数据中的值的过程。 建议在将更新发送到基础数据存储区之前对值进行检查,这样可以减少应用程序和数据存储区之间潜在的往返行程量。

提示

“数据集设计器”创建一个可以在其中将验证逻辑添加到数据集的分部类。 设计器生成的数据集不会删除或更改该分部类中的任何代码。 有关更多信息,请参见 如何:扩展数据集的功能

在数据列中的值发生更改时,可以通过响应 ColumnChanging 事件对数据进行验证。 引发此事件时,此事件将传递一个事件参数 (ProposedValue),此事件参数中包含为当前列建议的值。 根据 e.ProposedValue 的内容,您可以采取以下操作:

也可以在 RowChanging 事件期间执行验证。 有关更多信息,请参见 如何:在行更改过程中验证数据

列值更改时对数据进行验证

  1. 在**“数据集设计器”**中打开您的数据集。 有关更多信息,请参见如何:在数据集设计器中打开数据集

  2. 双击要验证的列。 此操作将创建 DataTableColumnChanging 事件处理程序。

    提示

    “数据集设计器”并不自动为此 C# 事件创建事件处理程序。 处理此事件所需的代码包含在下面。

  3. 添加代码以验证 e.ProposedValue 中包含的数据是否满足您应用程序的要求。 如果建议的值不可接受,则对该列进行设置,以指示其包含一个错误。

    下面的代码示例在 Quantity 列为 0 或更小时将设置列错误。 ColumnChanging 事件处理程序应该与以下所示类似:

    'Visual Basic
    Private Sub Order_DetailsDataTable_ColumnChanging(ByVal sender As System.Object, ByVal e As System.Data.DataColumnChangeEventArgs) _
        Handles Me.ColumnChanging
    
        If (e.Column.ColumnName = Me.QuantityColumn.ColumnName) Then
    
            If CType(e.ProposedValue, Short) <= 0 Then
            e.Row.SetColumnError(e.Column, "Quantity must be greater than 0")
        Else
            e.Row.SetColumnError(e.Column, "")
            End If
        End If
    End Sub
    
    // C#
    // Add this code to the DataTable 
    // partial class.
        public override void EndInit()
        {
            base.EndInit();
            ColumnChanging += SampleColumnChangingEvent;
        }
    
        public void SampleColumnChangingEvent(object sender, System.Data.DataColumnChangeEventArgs e)
        {
            if (e.Column.ColumnName == QuantityColumn.ColumnName)
            {
                if ((short)e.ProposedValue <= 0)
                {
                    e.Row.SetColumnError("Quantity", "Quantity must be greater than 0");
                }
                else
                {
                    e.Row.SetColumnError("Quantity", "");
                }
            }
        }
    

请参见

任务

演练:在 Windows 窗体上显示数据

如何:验证 Windows 窗体 DataGridView 控件中的数据

如何:使用 Windows 窗体 ErrorProvider 组件显示窗体验证的错误图标

如何:连接到数据库中的数据

参考

“数据源”窗口

概念

TableAdapter 概述

数据集设计器

数据源概述

其他资源

验证数据