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

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