如何在 InfoPath 2003 中通过调用 Web 服务动态填充下拉列表
推荐于2016-08-05 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:117538
获赞数:517193
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。
向TA提问 私信TA
关注
展开全部
通过“Web Service+规则”实现联动下拉列表框
用InfoPath设计表单时,可以作为下拉列表框的外部数据源有四种,即XML文档,MS SQL Server 数据库,Web Service和SharePoint列表。在这四种数据源只有Web Service支持参数查询,所以本例中我们选择Web Service作为联动的下级下拉列表框的数据源。我们的思路是这样的:表单上有两个下拉列表框,在上级下拉列表框的属性中设定规则,当上级下拉列表框的值改变时设置下级下拉列表框数据源的查询参数,然后重新检索数据,这样就刷新了下拉列表框的选项内容。
下面我们详细说明实现过程。
第一步,准备Web Service。
首先,我们需要准备一个演示用的Web Service,这个Web Service有一个操作GetCitiesByProvince,通过传入参数——省的名称,可返回该省城市名称的列表。具体如何创建WebService这里不再赘述,下面是代码。这段代码只作为演示用,不具实际意义,实际应用中应该从数据库里查询数据。
Code
将以上代码保存为文件ddlbws.asmx,放到SharePoint网站的_Layouts的虚拟目录,缺省物理路径为“c:\Program Files"Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS”。至于为什么放到这个目录中,我们在这里只作简要说明,有兴趣的朋友可以在网上搜索SharePoint中自定义Web Service的相关文章。一般认为,将Web Service文件放到_Layouts这个目录操作起来最简单,而且在InfoPath Forms Services中调用方便,不会有安全和信任方面的问题。
部署完ddlbws.asmx这个文件后可以试着在IE中访问该Web Service,观察是否部署成功,地址为:http://<SharePoint网站地址>/_layouts/ddlbws.asmx。如果部署成功,应该出现该Web Service的说明网页,如下图。
第二步,设计InfoPath表单。
1. 打开InfoPath客户端,点击菜单“设计表单模板”,在“设计表单模板”对话框中钩选“仅启用浏览器兼容性功能”。
2. 进入设计版面后我们先添加一个Web Service数据连接,作为以后用到的下拉列表框的数据源。选择菜单工具/数据连接进入数据连接对话框,点击“添加”按钮进入“数据连接向导”。选择新建连接/仅接收数据。
3. 进入下一步,选择“Web服务”。
4. 进入下一步,输入Web服务的位置:http://<sharepoint/网站地址>/_layouts/ddlbws.asmx
5. 进入下一步,选择操作GetCitiesByProvince。
6. 进入下一步,对参数tns:province设置值“四川”。
进入下一步,不要钩选“在表单模板中存储一份数据副本”。
7. 再下一步,接受缺省的数据连接的名字,点击“完成”按钮。
8. 创建完毕数据连接后我们接着设计表单。在表单模板中设置好布局,放置两个下拉列表框ddlb1和ddlb2。
9. 进入下拉列表框ddlb1的属性对话框,在“数据”页中,删除原有选项,手动输入两个选项“四川”和“新 疆”。
10.设置规则实现数据联动
点击“规则”按钮,再点击“添加”按钮进入规则设置对话框。在这里,我们添加三项操作,下表给出说明。
No.
操作
说明
1
设置域值: ddlb2 = “”
ddlb1值改变后先将ddlb2值清空
2
设置域值: province = .
设置Web Service数据源的查询参数province
3
使用数据连接进行查询: GetCitiesByProvince
按照新参数重新检索数据
11. 设置好规则后,我们还需要进入ddlb1属性的“浏览器表单”页,将回发设置更改为“始终”。
12. 下拉列表框ddlb1的属性设置完毕后,我们接着设置ddlb2的属性,这次我们只需要设置它的数据源。在“列表框项”下选择“从外部数据源查找值”,将“数据源”设置为GetCitiesByProvince,“项”设置为:/dfs:myFields/dfs:dataFields/tns:GetCitiesByProvinceResponse/tns:GetCitiesByProvinceResult/tns:string
值和显示名称都为“.”
至此,InfoPath表单设计完毕,将这个表单模板保存为ddlb.xsn。下一步我们将要把这个表单发布到SharePoint的网站上。
用InfoPath设计表单时,可以作为下拉列表框的外部数据源有四种,即XML文档,MS SQL Server 数据库,Web Service和SharePoint列表。在这四种数据源只有Web Service支持参数查询,所以本例中我们选择Web Service作为联动的下级下拉列表框的数据源。我们的思路是这样的:表单上有两个下拉列表框,在上级下拉列表框的属性中设定规则,当上级下拉列表框的值改变时设置下级下拉列表框数据源的查询参数,然后重新检索数据,这样就刷新了下拉列表框的选项内容。
下面我们详细说明实现过程。
第一步,准备Web Service。
首先,我们需要准备一个演示用的Web Service,这个Web Service有一个操作GetCitiesByProvince,通过传入参数——省的名称,可返回该省城市名称的列表。具体如何创建WebService这里不再赘述,下面是代码。这段代码只作为演示用,不具实际意义,实际应用中应该从数据库里查询数据。
Code
将以上代码保存为文件ddlbws.asmx,放到SharePoint网站的_Layouts的虚拟目录,缺省物理路径为“c:\Program Files"Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS”。至于为什么放到这个目录中,我们在这里只作简要说明,有兴趣的朋友可以在网上搜索SharePoint中自定义Web Service的相关文章。一般认为,将Web Service文件放到_Layouts这个目录操作起来最简单,而且在InfoPath Forms Services中调用方便,不会有安全和信任方面的问题。
部署完ddlbws.asmx这个文件后可以试着在IE中访问该Web Service,观察是否部署成功,地址为:http://<SharePoint网站地址>/_layouts/ddlbws.asmx。如果部署成功,应该出现该Web Service的说明网页,如下图。
第二步,设计InfoPath表单。
1. 打开InfoPath客户端,点击菜单“设计表单模板”,在“设计表单模板”对话框中钩选“仅启用浏览器兼容性功能”。
2. 进入设计版面后我们先添加一个Web Service数据连接,作为以后用到的下拉列表框的数据源。选择菜单工具/数据连接进入数据连接对话框,点击“添加”按钮进入“数据连接向导”。选择新建连接/仅接收数据。
3. 进入下一步,选择“Web服务”。
4. 进入下一步,输入Web服务的位置:http://<sharepoint/网站地址>/_layouts/ddlbws.asmx
5. 进入下一步,选择操作GetCitiesByProvince。
6. 进入下一步,对参数tns:province设置值“四川”。
进入下一步,不要钩选“在表单模板中存储一份数据副本”。
7. 再下一步,接受缺省的数据连接的名字,点击“完成”按钮。
8. 创建完毕数据连接后我们接着设计表单。在表单模板中设置好布局,放置两个下拉列表框ddlb1和ddlb2。
9. 进入下拉列表框ddlb1的属性对话框,在“数据”页中,删除原有选项,手动输入两个选项“四川”和“新 疆”。
10.设置规则实现数据联动
点击“规则”按钮,再点击“添加”按钮进入规则设置对话框。在这里,我们添加三项操作,下表给出说明。
No.
操作
说明
1
设置域值: ddlb2 = “”
ddlb1值改变后先将ddlb2值清空
2
设置域值: province = .
设置Web Service数据源的查询参数province
3
使用数据连接进行查询: GetCitiesByProvince
按照新参数重新检索数据
11. 设置好规则后,我们还需要进入ddlb1属性的“浏览器表单”页,将回发设置更改为“始终”。
12. 下拉列表框ddlb1的属性设置完毕后,我们接着设置ddlb2的属性,这次我们只需要设置它的数据源。在“列表框项”下选择“从外部数据源查找值”,将“数据源”设置为GetCitiesByProvince,“项”设置为:/dfs:myFields/dfs:dataFields/tns:GetCitiesByProvinceResponse/tns:GetCitiesByProvinceResult/tns:string
值和显示名称都为“.”
至此,InfoPath表单设计完毕,将这个表单模板保存为ddlb.xsn。下一步我们将要把这个表单发布到SharePoint的网站上。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询