最近在利用SharePoint Server 2013的列表组织和存储数据,发现SharePoint列表原始不支持级联选择的功能。
谷歌百度一通以后,发现了很多通过代码实现的方案,利用第三方的插件spservices的http://spservices.codeplex.com/releases/view/119578,或者自己编段代码的http://www.cnblogs.com/jianyus/p/3812758.html(JQuery+JavaScript),但觉得都不太理想。最后发现可以利用InfoPath设计列表,不用编写一行代码,就可以轻松实现字段之间的级联互动。下面介绍一下这个方案的具体操作:
1. 配置SharePoint Server的State Service(状态服务)
如果需要利用InfoPath来设计菜单,必须启用State Service,否则列表无法正确打开。
以SharePoint场管理员身份打开管理中心,并选择配置向导
Figure 1
Figure 1
Figure 3
Figure 4
2. 使用InfoPath配置级联选择
2.1 首先创建2个父子列表,用以保存级联选项的来源。
这里我以中国的省市为例,创建一个省市的父列表,再创建一个地区的字列表,如下图
Figure 5
2.2 再使用InfoPath创建/便捷一个示例的列表,需要引用上面的两个父子列表
在列表中添加两个下拉列表项,分别绑定省市/地区字段,具体操作如下
Figure 6 - 绑定省市字段
Figure 7 - 绑定地市字段
Figure 8 - 设置筛选
Figure 9 - 设置筛选条件时,一定要注意选择“主”里面的字段,否则没有级联效果的
设置完成以后,通过InfoPath的预览功能,就可以验证级联效果了,然后发布到SharePoint Server中。
Figure 10 - 预览效果
2.3 配置规则,优化级联选择
通过上面配置,基本实现了级联功能。但是在选择了子项(地市)以后,如果再切换省市,你会发现子项没有清空。所以还需要配置父字段(省市)的规则来优化级联功能,实现切换父字段的值时,自动清空子项的值。
Figure 11 - 为父字段设置规则
Figure 12 - 设置域值
Figure 13 - 设置地市字段的值为空
通过上述设置后,基本上实现了一个比较完美的级联选择功能。
http://www.cnblogs.com/danzhang 张洪君
2015-3-23补充:
1. 在InfoPath中创建下列框的时候,必须选择查找类型,不能选择“手动输入选项”,如下图:
2. 在设置字段属性时,必须选择SharePoint列表节点,不要选择具体的字段名称;然后再设置“值”和”显示名称“中设置对应的字段,如下图: