演练:向数据集添加验证

更新:2007 年 11 月

本演练演示如何在对数据集中的数据进行更改时验证数据。在何处对数据执行验证检查取决于应用程序的要求;对于本演练,我们在对各列中的值进行更改的过程中验证数据。本演练使用 ColumnChanging 事件来验证输入到记录中的值是可接受的。如果值无效,则向用户显示 ErrorProvider 控件。

该示例还演示如何使用“数据集设计器”创建数据集的分部类。(用户可以在分部类中添加代码以扩展由 Visual Studio 生成的数据集的功能。它在数据集重新生成时不会覆盖。)

说明:

显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您的当前设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置

本演练涉及以下任务:

先决条件

若要完成本演练,您需要:

创建新的 Windows 应用程序

创建新的 Windows 应用程序项目

  1. 从“文件”菜单创建一个新的项目。

  2. 将项目命名为 ValidationWalkthrough。

  3. 选择“Windows 应用程序”,然后单击“确定”。有关更多信息,请参见创建基于 Windows 的应用程序

    ValidationWalkthrough 项目即被创建并添加到“解决方案资源管理器”中。

从数据库创建新数据源

创建数据源

  1. 在“数据”菜单上单击“显示数据源”。

  2. 在“数据源”窗口中,选择“添加新数据源”,启动“数据源配置向导”。

  3. 在“选择数据源类型”页面上选择“数据库”,然后单击“下一步”。

  4. 在“选择您的数据连接”页面上执行下列操作之一:

    • 如果下拉列表中包含到 Northwind 示例数据库的数据连接,请选择该连接。

      - 或 -

    • 选择“新建连接”,以启动“添加/修改连接”对话框。有关更多信息,请参见“添加/修改连接”对话框(通用)

  5. 如果数据库需要密码,请选择该选项以包括敏感数据,再单击“下一步”。

  6. 在“将连接字符串保存到应用程序配置文件”页面上单击“下一步”。

  7. 在“选择数据库对象”页面上展开“表”节点。

  8. 选择“Order Details”表,然后单击“完成”。

    “NorthwindDataSet”被添加到您的项目中,并且“数据源”窗口中出现“OrderDetails”表。

创建数据绑定控件

在窗体上创建数据绑定控件

  1. 在“数据源”窗口中,选择“Order Details”表。

  2. 从表的控件列表中选择“Details”。

  3. 将“Order Details”节点从“数据源”窗口拖动到“Form1”上。

    带有描述性标签的数据绑定控件会出现在窗体上,同时还显示一个工具条 (BindingNavigator),用于在记录间进行导航。带有描述性标签的数据绑定控件会出现在窗体上,同时还显示一个工具条 (BindingNavigator),用于在记录间进行导航。组件栏中出现 NorthwindDataSetOrder_DetailsTableAdapterBindingSourceBindingNavigator

将一个 ErrorProvider 控件添加到该窗体

配置 ErrorProvider 控件

  1. ErrorProvider 从“工具箱”拖到“Form1”上。

  2. 在“属性”窗口中,将 ErrorProviderDataSource 属性设置为“Order_DetailsBindingSource”。

    说明:

    不要设置 DataMember 属性。

创建 ColumnChanging 事件处理程序

创建验证事件处理程序

  1. 通过双击 解决方案资源管理器 中的“NorthwindDataSet.xsd”文件在“数据集设计器”中打开 NorthwindDataSet。

  2. 双击 OrderDetails 表中的 Quantity 列来创建 OrderDetailsDataTable_ColumnChanging 事件处理程序。(在 C# 中仅创建数据表的分部类。)

    说明:

    双击表名(标题栏中的“Order Details”)会创建 RowChanging 事件的事件处理程序。

  3. 添加代码来验证 e.ProposedValue 包含大于 0 的值。如果建议值小于或等于 0,则设置列来指示其包含错误。

    将下面的代码粘贴到“Add user code here”(此处添加用户代码)注释下的列更改事件处理程序中:

    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
    
    // C#
    // Add the following code 
    // to the partial class.
        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", "");
            }
        }
    

测试应用程序

测试应用程序

  1. 按 F5 运行该应用程序。

  2. 将“Quantity”文本框中的值更改为 0。

  3. 按 Tab 将焦点移动到文本框外。

    出现错误提供程序图标。

  4. 使鼠标指针悬停于错误提供程序之上以查看消息。

后续步骤

根据应用程序的要求,在添加验证后可能要执行几个步骤。您可以通过以下操作来增强此演练的效果:

请参见

概念

数据中的新增功能

“显示数据”概述

其他资源

数据演练

连接到 Visual Studio 中的数据

准备应用程序以接收数据

将数据获取到应用程序

在 Windows 应用程序中的窗体上显示数据

在应用程序中编辑数据

验证数据

保存数据