演练:向数据集添加验证

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

该示例还演示如何使用**“数据集设计器”**创建数据集的分部类。 (用户可以在分部类中添加代码以扩展由 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 窗体控件绑定到数据

在 Visual Studio 中将控件绑定到数据

其他资源

数据演练

连接到 Visual Studio 中的数据

准备应用程序以接收数据

将数据获取到应用程序

在应用程序中编辑数据

验证数据

保存数据