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

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

提示

“数据集设计器”创建一个可以在其中将验证逻辑添加到数据集的分部类。 设计器生成的数据集不会删除或更改该分部类中的任何代码。

通过响应 RowChanging 事件,可以在数据行中的值发生更改时对数据进行验证。 引发该事件时,该事件向会传递一个事件参数 (e.Row),此参数中包含当前行中每个列的建议值。 根据 e.Row 中每列的内容,可以进行以下操作:

您还可以使用 ColumnChanging 事件,在更改单个列期间执行验证。 有关更多信息,请参见 如何:在列更改过程中验证数据

在 RowChanging 事件中验证数据

您可以编写代码,以验证每个要验证的列中包含的数据是否满足应用程序的要求。 如果建议的值不可接受,请设置该列,指示其包含一个错误。 以下的示例将在 Quantity 列为 0 或更小时设置列错误。 RowChanging 事件处理程序应与以下示例类似。

行更改时验证数据 (Visual Basic)

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

  2. 双击要验证的表的标题栏。 此操作将自动在数据集的分部类文件中创建 DataTableRowChanging 事件处理程序。

    提示

    在表名称的左侧双击,以创建 RowChanging 事件处理程序。 双击表名称可以对其进行编辑。

    Private Sub Order_DetailsDataTable_Order_DetailsRowChanging(
        ByVal sender As System.Object, 
        ByVal e As Order_DetailsRowChangeEvent
      ) Handles Me.Order_DetailsRowChanging
    
        If CType(e.Row.Quantity, Short) <= 0 Then
            e.Row.SetColumnError("Quantity", "Quantity must be greater than 0")
        Else
            e.Row.SetColumnError("Quantity", "")
        End If
    End Sub
    

行更改时验证数据 (C#)

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

  2. 双击要验证的表的标题栏。 此操将为 DataTable 创建一个分部类文件。

    提示

    “数据集设计器”不会自动为 RowChanging 事件创建事件处理程序。 您必须创建一个方法以处理 RowChanging 事件,并在表的初始化方法中执行代码以挂钩该事件。

  3. 将下列代码复制到分部类中:

        public override void EndInit()
        {
            base.EndInit();
            Order_DetailsRowChanging += TestRowChangeEvent;
        }
    
        public void TestRowChangeEvent(object sender, Order_DetailsRowChangeEvent e)
        {
            if ((short)e.Row.Quantity <= 0)
            {
                e.Row.SetColumnError("Quantity", "Quantity must be greater than 0");
            }
            else
            {
                e.Row.SetColumnError("Quantity", "");
            }
        }
    

请参见

任务

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

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

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

参考

“数据源”窗口

事件(C# 编程指南)

概念

数据应用程序开发中的新增功能

TableAdapter 概述

数据集设计器

数据源概述

其他资源

数据演练

验证数据