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