原文:
 
by S.Y.M. Wong-A-Ton
 
这篇文章描述了当组合框中录入的内容包含了无效记录,设置一个规则来弹出一个信息提示框,提示未发现。
 
问题:
在InfoPath表单中,如果你录入在组合框控件中的内容不是一条有效的条目(在有效记录的列表中不存在),就会提示给用户一个信息提示框。
 
解决方案:
当一条无效的记录被录入到组合框中,用一个规则来完成显示一个信息提示框的功能。
 
探讨:
为了能够检查一条记录是否是有效的记录,你须将组合框绑定到主数据源的重复节点上或者一个外部数据源,这里我们将组合框绑定到InfoPath表单的主数据源的重复节点上。
 
具体步骤:
你可以按照以下的步骤来完成此功能:
1   设计一个新的InfoPath表单模板
2   给表单添加一个组合框控件,命名为comboboxvalue
3   在主数据源添加右击myFields(组)选择添加,弹出一个“添加域或组”的对话框在类型中选择组节点依次按照下图,再在刚添加的组文件夹下添加一个重复组的节点,依次添加两个(域)元素
4   在工具菜单中选择默认值
5   在编辑默认值对话框,展开entries节点,右击第一个entry节点,并选择“在下方添加另一个entry”,并为每一个entry节点下面的value和displayname节点的默认值进行设置。如下图:
添加完毕单击确定
6   双击组合框控件打开它的属性对话框
7   在组合框属性的数据选项卡的列表框项下选中“在表单数据源中查找值(F)”
8   如下图所示将组合框绑定到entry节点
9   在组合框属性对话框中,单击“规则”按钮  
10 在规则对话框点击“添加”
11 在第二个规则对话框中点击“添加操作”,并在操作对话框中的“操作”项下面的列表框中选择“显示对话框消息”,在“消息”项中录入提示信息
12  同11再添加一个“添加操作”,并在操作对话框中的“操作”项下面的列表框中选择“设置域值”,在“消息”项中不录入任何内容。如下图所示:
13 再回到“规则”对话框,点击“设置条件”按钮并添加两个条件。具体如下图:
表达式: count(../my:entries/my:entry/my:value[. = ../../../my:comboboxvalue]) = 0

comboboxvalue: 不为空
其中../my:entries/my:entry/my:value[. = ../../../my:comboboxvalue]是个XPath表达式
如果你觉得自己写它有困难可以参见下面内容,以便自动获得XPath表达式
1) 双击组合框控件打开属性对话框
2) 在组合框属性对话框中,单击“规则”按钮
3) 在规则对话框中,单击“添加”
4) 在接着出现得规则对话框中,单击“添加操作”
5) 在操作对话框中,在“操作”项下选择“设置域值”
6) 在操作对话框中,点击“公式”按钮
7) 在插入公式对话框中,点击“插入域或组”按钮
8) 在选择域或组对话框中,选择value节点,然后单击“筛选数据”按钮

9) 在筛选数据对话框中,点击”添加“按钮
10)在指定筛选条件对话框中, 按照下图做相应设置
11) 单击“确定” 关闭指定筛选条件对话框
12) 单击“确定”关闭筛选数据对话框
13) 单击“确定”关闭选择域或组对话框
14) 在插入公式对话框,选择上“编辑XPath(高级)”

15) 可以拷贝“公式”项下面文本框中的内容到13(条件对话框中的表达式)中的count函数作为参数

注意:第一个条件得到组合框中的value和entries中相同的value的数量,如果entries中的数量为0,就是一个无效的entry。第二个条件确保当一个条目被录入到组合框中时,能按照指定的规则运行。如果没有第二个条件,信息提示框就会显示两次,因为在显示完提示信息后,我们使得组合框为空了。