手机版

Infopath中数据验证的三种方法

时间:2021-10-22 来源:互联网 编辑:宝哥软件园 浏览:

Infopath的使用防止了最终用户以完全手写的方式生成XML数据文件,还可以统一XML文件的格式,广泛应用于MOSS系统和网站开发中。使用Infopath开发一个XML前端表单页面需要几个特定的步骤,例如编写一个XML示例文件、生成一个XML Schema文件、在Infopath中导入主数据源、设计Infopath表单演示文稿,以及在必要时向表单中添加C#事件代码,如打开和保存表单时要执行的操作、附加按钮时要执行的操作等。如果读者对Infopath的开发感兴趣,可以单独研究。本文主要介绍如何在Infopath中验证数据的有效性。在Infopath中,有三种方法可以验证数据的有效性:1。使用Infopath的内置数据类型。2.向输入项添加自定义数据验证条件或验证事件。3.通过向表单的自定义按钮添加规则或验证事件来验证数据的有效性。使用Infopath内置数据类型的自动数据验证是最简单的数据验证方法。在Infopath中添加控件或为主数据源中的字段指定控件时,可以为控件的输入指定数据类型。如果没有为Infopath指定单独的主数据源,Infopath将根据您在表单中添加的控件来构建数据源结构。如果在编辑表单之前已经指定了主数据源,则控件接受的数据类型取决于它绑定到的数据源中字段的数据类型。在编写XML Schema文件时,可以单独指定数据源中字段的数据类型。如果未指定,则默认为字符串类型,表示可以接受任何类型的数据。在Infopath中右键单击要设置数据验证的控件,单击“属性”,或者直接双击该控件,在弹出的对话框中设置该控件的数据类型,如下图所示:2010-5-30 12-06-16

Infopath支持以下数据类型:文本(字符串)、整数(双精度)、布尔值(真/假)、超链接(安玉瑞)、日期(时间)、日期和时间(日期时间)。在属性对话框中,我们还可以设置数据的默认值和数据格式。设置控件的数据类型后,如果最终用户填写表单时数据类型不匹配,Infopath会给出相应的提示信息,如:2010-5-30 12-16-42

使用自定义数据验证条件或验证事件来验证数据。您可以设置自定义数据验证条件或编写自定义事件来验证Infopath中的数据,这需要一些额外的编程开销或计算机编程知识。1.使用用户自定义的数据验证条件右键单击要设置数据验证的控件,单击“属性”,或者直接双击该控件,在弹出的对话框中单击“数据验证”按钮,在弹出的对话框中单击“添加”,在数据验证对话框中设置数据验证条件,并在数据验证失败时填写屏幕提示信息和警告对话框中要显示的消息内容。Infopath集成了很多数据验证条件供用户直接选择,如字段中的值有大于、小于、等于、包含、不包含等。如果要定义自己的匹配模式,可以选择“匹配模式”或“不匹配模式”,然后在第三个下拉列表中选择“选择模式”,在弹出的对话框中编写自定义模式正则表达式。例如,如果要规定此字段只能接受包含小数点的数字,可以编写以下规则:复制代码如下:-?[0-9]*\.[0-9]然后设置警告信息:2010-5-30 12-44-04

2.使用自定义验证事件使用自定义验证事件需要编写C#代码来验证数据的有效性,因为Infopath内置了VSTA编程接口,这使得我们通过Visual Studio为Infopath编写C#代码来完成一些特定的功能非常方便。这里需要注意的是,写这篇文章的时候,我的本地开发环境是Visual Studio 2008 Office 2007。安装Office 2007时,必须手动选中Infopath下的VSTA选项,否则默认情况下Infopath将不支持VSTA编程接口。Infopath中的VSTA默认使用Visual Studio 2005的开发环境,读者无需专门安装Visual Studio 2005。默认情况下,VSTA将配置所需的程序和环境。2010-5-30 12-57-53

右键单击要设置数据验证的控件,并选择编程-“验证事件”。此时,Infopath将联系Visual Studio以打开VSTA项目。在VSTA项目中,我们可以为事件添加自定义方法。有一点需要说明。默认情况下,Infopath将使用VB.NET语言创建VSTA项目。如果要更改项目语言,可以单击“工具”-“选项”,并在“设计”选项卡中选择C#作为语言。同时,还可以设置项目的默认保存位置。如果您以前在VB.NET创建过VSTA项目,可以通过“工具-表单选项”删除“编程”选项卡中的代码,然后重新创建一个新的VSTA项目。您也可以在此处的Infopath表单中选择VSTA项目的存储位置。2010-5-30 12-52-16

2010-5-30 13-11-02

我们在VSTA添加了以下代码来实现数据验证效果,在上面的示例中,我们限制只接受数字类型。复制代码如下: public void field 1 _ validating(object sender,xmlvalidationeventargs) {if(!e . undo redo e . operation==xmlooperation . value change){//获取数据源中域的值XPath navigator root=main data source . create navigator();字符串字段1=根。选择单个节点('//my:field1 ',NamespaceManager)。价值;//检查用户输入是否与正则表达式系统匹配。text . regular expressions . regex=new system . text . regular expressions . regex(@ '-?[0-9]*\.[0-9] ');if(!Regex。ismatch(field 1)){ e . reporter(e . site,true,'只允许数字');}}}保存代码并关闭Visual Studio,保存或发布编写好的Infopath表单,然后直接打开表单实例,在需要验证的字段中输入内容。验证失败时,Infopath会根据验证事件代码中的要求弹出相应的提示。2010-5-30 13-57-17

使用规则或验证事件验证按钮上的数据在Infopath中,除了上述两种方法之外,我们还可以通过为表单上的按钮设置规则和验证事件来验证域中的数据。1.使用规则验证数据。例如,表单中有一个文本框、一个表达式框和一个按钮。我们希望验证用户在文本框中输入的值是否为数字,并在表达式框中显示信息。按照以下步骤给按钮添加规则:右键点击按钮,点击属性,或者直接双击按钮,在弹出的对话框中点击规则。单击规则对话框中的添加。单击规则对话框中的添加操作。在操作对话框中,从操作下拉列表中选择设置域值。点击“域”后面的按钮,在弹出的对话框中选择表达式框绑定的域,点击“确定”关闭对话框。在“操作”对话框中,将“值”文本框留空,单击“确定”关闭,然后关闭“规则”对话框。这时在“规则”对话框中增加了一个新规则,它的作用是在点击按钮时清空表达式框中的值。根据前面的步骤,添加另一个规则,该规则也绑定到表达式框,并将该值设置为“只允许数字”。为规则2设置条件。在条件对话框中,选择要验证的字段(这里应该是文本框对应的字段),然后选择不匹配模式,将匹配正则表达式设置为-?[0-9]*\.[0-9]确认并关闭所有对话框。当用户打开表单实例时,在文本框中输入非数字,然后单击按钮,相应的提示将出现在表达式框中。如果用户输入的内容符合验证规则,表达式框中的内容将被清空。2.使用验证事件验证按钮上的数据有效性。右键点击按钮,点击“属性”,或者直接双击按钮,点击“属性”对话框中的“编辑表单代码”。一个新的按钮事件已被添加到VSTA工程代码。添加如下代码:复制代码如下:public void ctrl 2 _ 5 _ clicked(对象发送方,clicked event args e){//获取表单数据源根节点的引用XPath navigator root=maindata source . create navigator();//清空表达式框root . selectsinglenode(' my : field 2 ',命名空间管理器)中的内容。setvalue(“”);//检查文本框中的值是否为数字,并显示提示消息stringfield 1=root。selectsinglenode ('my3360field 1,命名空间管理器)。表达式框中的值;系统。正则表达式。Text .正则表达式. Regex(@'-?[0-9]*\.[0-9] ');if(!regex . ismatch(field 1)){ root . selectsinglenode('//my : field 2 ',命名空间管理器)。setvalue('只允许数字');}}注意:在Infopath中,所有的数据验证只会给出相应的提示信息,用户可以强制保存表单,忽略数据验证的提示信息。此外,主数据源节点名称(如my:field1、my3360field2等。)本文C#代码中使用的根据实际情况有所不同。

版权声明:Infopath中数据验证的三种方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。