如何:在 InfoPath 表单中嵌入外部项选择器控件

如何:在 InfoPath 表单中嵌入外部项选择器控件,第1张

外部选取器在服务器和丰富客户端

Microsoft

Office

应用程序中为外部项提供选取和解决功能。如果您已经为

BDC

元数据存储中的外部内容类型设置了关联,并且该外部内容类型包含一个外键,则

Microsoft

Business

Connectivity

Services

(BCS)

将自动在表单中为该字段添加一个选取器。例如,让我们以客户/订单场景为例。假设已设置外部内容类型和关联。如果您在

InfoPath

中自定义

Order

外部列表表单,Business

Connectivity

Services

默认情况下会将

CustomerID

字段的外部项选取器控件放置在

Order

表单中。这使用户在处理订单时,可轻易地找到他们所需的客户。然而,如果由于

SpecificFinder

具有一个或多个复杂类型而导致自动生成的

InfoPath

表单为空白表单,则您必须从服务器功能区中拖动一个外部项选取器控件,并设置所需的属性。您可能还想要从自定义

InfoPath

表单中启用此选取和解决功能。

若要嵌入一个外部项选取器控件,请将该外部项选取器控件拖放至

InfoPath

2010

中的设计表面上,然后在“常规”选项卡和“其他设置”选项卡上设置属性。表

1

列出了在表单中使用选取器时可能需要填写的设置。表1.

在表单中使用选取器时要提供的设置选项卡字段说明常规ECT

命名空间BDC

模型中的实体命名空间。ECT

名称外部内容类型的名称,如

BDC

模型中所示。系统示例名称BDC

模型中的

LOBSystemInstance

名称。查找器名称用来填充选取器对话框的

Finder

方法的名称。此字段是可选的,如果不指定此字段,Business

Connectivity

Services

将使用

BDC

模型中的默认查找器。显示字段名称您想要在选取器中显示的字段。这应该是由

Finder

返回的

TypeDescriptor

的名称。SharePoint

网站

URL可选的网站

URL

字段。如果将此表单发布到

SharePoint

网站,则不需要此字段。

对话框标题可显示外部项并允许用户选取一个或多个项的对话框的标题。显示更多结果如果选中此复选框,则

Business

Connectivity

Services

将在对话框中显示“显示全部结果”按钮。最大结果数对话框中显示的结果的最大数量。默认值为

100。刷新间隔(以分钟为单位)刷新缓存的频率。默认频率为每

360

分钟刷新一次。最大行数用于多重选择的选取器控件中的可见行数。其他设置默认查询每次打开选取器对话框时

Business

Connectivity

Services

使用的筛选值。如果未指定此值,则在每次打开对话框时,将检索所有的项。

默认查询每次打开选取器对话框时默认执行的查询。允许多重选择如果选中,则允许用户选择多个项。您可能需要编写隐藏代码,以在表单中支持此功能。打开时刷新如果选中此选项,则在表单加载时从外部系统刷新数据。选取器模式默认设置是首先使用本地

Business

Connectivity

Services

缓存,如果该缓存为空,则连接到外部系统。其他可用选项有:

仅本地缓存模式直接连接到外部数据源通过SharePoint

连接到外部数据源图1

演示了“常规”选项卡如何从

AdventureWorks

中获取

Customer

外部内容类型。图1.

InfoPath

中的外部项选取器的“常规”选项卡图2

演示了“其他设置”选项卡。您可忽略此图中未突出显示的字段。

通过“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的网站上。

在节(section)的属性(display)里面加入条件格式(conditional formatting),然后根据你的逻辑、关键词、复选框field定义这个条件,就可以到达你想要的效果了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11930726.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存