表单设计中我们常会遇到需要级联下拉列表项的情况(即下一级的下拉列表选项需要随上一级已选中值的变化而变化),这在客户端是很好实现的,只需要在二级下拉列表框中筛选数据即可。但是如果我们需要把表单发布到Formservice就会出现问题了,因为“启用浏览器功能的表单模板不支持筛选”
不支持筛选又要实现级联,这就迫使我们不得不“手工”进行筛选,通常我们有两种做法:(1)添加webService数据连接,利用webService进行筛选(2)在上一级的下拉列表框的changed事件中添加动作,只要上一级的下拉列表框中的值发生变化,就修改下一级选项的备选值。
这两种方法的优点在于灵活,适用于数据量大且变动频繁的情况。但是毕竟是需要代码开发,对于无代码基础的业务人员设计表单是不是有简便的方法呢?
下面我就来介绍一种适用于少量数据的方法~
【题设】
学校里每个年级拥有的班级数目都不同,在选择班级时,我们需要先选择年级,然后将该年级所包含的班级筛选出来以供用户选择。
【准备】
在数据源中添加如下域组:
所有域均为文本类型,其中带有蓝色小箭头的“Option”和“ClassOption”为重复域组。
【详细步骤】
1.进入“编辑默认值对话框”(工具à默认值)
2.选中“GradeChoice”,在下方的“默认值”处填写“一年级”。
3.同样为ClassOption赋默认值为“一年一班”:
4.点击ClassOption右边的小箭头,选中其中的“在下方添加一个另一个ClassOption”。给新添加的ClassOption赋值为“一年2班”:
5.点击Option右边的小箭头,选中其中的“在下方添加一个另一个Option”。
给新添加的Option中的GradeChoice赋值为“二年级”:
6.修改新添加的Option中的ClassOption的默认值。以此类推,根据实际的年级数及班级数给域赋默认值。
7.给表单拖入控件下拉列表框,绑定数据源为“Grade”,双击下拉列表框,在弹出的属性框中的“列表框项”中选择“在表单数据中查找值”,在“选择存储项的重复组或项”的“项”中选择“GradeChoice”:
8.拖入重复表控件,将重复表绑定在Option,并选择显示“ClassChoice”列:
9.将重复表中显示的ClassChoice文本框通过右键菜单更改为下拉列表框,并修改下拉列表框属性,在“列表框项”中选择“在表单数据中查找值”,在“选择存储项的重复组或项”的“项”中选择“ClassOption”:
10.设置重复表的显示规则:
11.发布到sharepoint服务器的效果:

 

【总结】
这种方法不要求代码,但是初次操作的话还是有些耗时的,建议在数据量小且变动不频繁的情况下考虑这种方法。
认为添加默认值的步骤麻烦的话,直接修改xsn中的template.xml文件应该也是可以的(没亲自试,觉得应该可以)。