演练:向数据集添加验证
本演练演示如何在对数据集中的数据进行更改时验证数据。 在何处对数据执行验证检查取决于应用程序的要求;对于本演练,我们在对各列中的值进行更改的过程中验证数据。 本演练使用 ColumnChanging 事件来验证输入到记录中的值是可接受的。 如果值无效,则向用户显示 ErrorProvider 控件。
该示例还演示如何使用**“数据集设计器”**创建数据集的分部类。 (用户可以在分部类中添加代码以扩展由 Visual Studio 生成的数据集的功能。 它在数据集重新生成时不会覆盖。)
备注
对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您所使用的 Visual Studio 版本和您所使用的设置。有关更多信息,请参见 Visual Studio 设置。
本演练涉及以下任务:
创建新的**“Windows 应用程序”**项目。
使用 数据源配置向导 创建并配置数据集。
选择从**“数据源”**窗口拖动某些项时要在窗体上创建的控件。 有关更多信息,请参见如何:设置从“数据源”窗口中拖动时要创建的控件。
通过将项从 “数据源”窗口 拖到您的窗体上来创建数据绑定控件。
创建分部类以扩展数据集的功能。
为 OrderDetails 表的 ColumnChanging 事件创建一个事件处理程序。
添加相应的验证来确认 Quantity 列包含大于 0 的值。
显示 ErrorProvider 组件(Windows 窗体)来通知用户数据绑定控件包含无效值。
系统必备
若要完成本演练,您需要:
- 对 Northwind 示例数据库的访问权。 有关更多信息,请参见 如何:安装示例数据库。
创建新的 Windows 应用程序
创建新的 Windows 应用程序项目
从**“文件”**菜单创建一个新的项目。
将项目命名为 ValidationWalkthrough。
选择**“Windows 应用程序”,然后单击“确定”**。 有关更多信息,请参见 开发客户端应用程序。
ValidationWalkthrough 项目即被创建并添加到**“解决方案资源管理器”**中。
从数据库创建新数据源
创建数据源
在**“数据”菜单上,单击“显示数据源”**。
在**“数据源”窗口中,选择“添加新数据源”,启动“数据源配置向导”**。
在**“选择数据源类型”页上选择“数据库”,然后单击“下一步”**。
在**“选择您的数据连接”**页面上执行下列操作之一:
如果下拉列表中包含到 Northwind 示例数据库的数据连接,请选择该连接。
- 或 -
选择**“新建连接”,启动“添加/修改连接”**对话框。 有关更多信息,请参见“添加/修改连接”对话框(通用)。
如果数据库需要密码,请选择该选项以包括敏感数据,再单击**“下一步”**。
在**“将连接字符串保存到应用程序配置文件”页面上单击“下一步”**。
在**“选择数据库对象”页面上展开“表”**节点。
选择**“Order Details”表,然后单击“完成”**。
**“NorthwindDataSet”被添加到您的项目中,并且“数据源”窗口中出现“OrderDetails”**表。
创建数据绑定控件
在窗体上创建数据绑定控件
在**“数据源”窗口中,选择“Order Details”**表。
从表的控件列表中选择**“Details”**。
将**“Order Details”节点从“数据源”窗口拖动到“Form1”**上。
带有描述性标签的数据绑定控件会出现在窗体上,同时还显示一个工具条 (BindingNavigator),用于在记录间进行导航。 带有描述性标签的数据绑定控件会出现在窗体上,同时还显示一个工具条 (BindingNavigator),用于在记录间进行导航。 组件栏中出现 NorthwindDataSet、Order_DetailsTableAdapter、BindingSource 和 BindingNavigator。
将一个 ErrorProvider 控件添加到该窗体
配置 ErrorProvider 控件
将 ErrorProvider 从**“工具箱”拖到“Form1”**上。
在**“属性”窗口中,将 ErrorProvider 的 DataSource 属性设置为“Order_DetailsBindingSource”**。
备注
不要设置 DataMember 属性。
创建 ColumnChanging 事件处理程序
创建验证事件处理程序
通过在解决方案资源管理器中双击**“NorthwindDataSet.xsd”文件,在“数据集设计器”**中打开 NorthwindDataSet。
双击 OrderDetails 表中的 Quantity 列来创建 OrderDetailsDataTable_ColumnChanging 事件处理程序。 (在 C# 中仅创建数据表的分部类。)
备注
双击表名(标题栏中的“Order Details”)会创建 RowChanging 事件的事件处理程序。
添加代码以验证 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", ""); } }
测试应用程序
测试应用程序
按 F5 运行该应用程序。
将**“Quantity”**文本框中的值更改为 0。
按 Tab 将焦点移动到文本框外。
出现错误提供程序图标。
使鼠标指针悬停于错误提供程序之上以查看消息。
后续步骤
根据应用程序的要求,在添加验证后可能要执行几个步骤。 您可以通过以下操作来增强此演练的效果:
添加将更新发送回数据库的功能。 有关更多信息,请参见 演练:将数据保存到数据库(单个表)。
编辑数据集来添加或移除数据库对象。 有关更多信息,请参见如何:编辑数据集。
请参见
概念
Visual Studio 2012 中针对数据应用程序开发的新增功能
在 Visual Studio 中将 Windows 窗体控件绑定到数据