我们有一个文档库,其中包含提案列表(InfoPath Forms)。用户使用声明(表单身份验证,通过外部网)通过 SharePoint 登录,这些用户来自不同的组织。表单在客户端上的 InfoPath 中打开。InfoPath 表单包含一个字段,用于表示提案所属的组织(选择列表),用户在填写表单时随后选择该字段。
我们编写了一个自定义声明提供程序,该提供程序使用组织声明扩充每个用户的登录名。
当用户在 InfoPath 表单填充器中从 SharePoint 打开建议时,我们希望:
- 使用组织预填充组织选择列表匹配用户的声明
- 限制表单的保存(插入和更新),如果组织的用户声明值与所选内容不匹配表单上的组织
我想知道如何在 InfoPath 中获取索赔信息。或者,有关如何使用自定义工作流/事件接收器/Web 服务(或其他内容)在服务器端执行此操作的想法。
下面是从 SharePoint 2010 获取声明的基本教程。将其放在 InfoPath 表单的代码后面。http://msdn.microsoft.com/en-us/library/ee535731.aspx
理想情况下,您希望从 InfoPath 表单的 FormEvents_Loading 方法调用代码,如果用户的组织无效,请创建一个布尔值,如果为 false,则将阻止表单提交。这将在FormEvents_Submit方法中完成。
我不确定这是否适用于您的特定实现,但是,您可以将输入控件(下拉列表、列表框等)的数据源设置为从 Web 服务检索。
然后,您可以使用电子表格上的隐藏字段,这些字段填充了您需要的元数据,例如用户 ID。这些值随后被传递到 Web 服务,返回值(列表或其他任何值)绑定到 eForm 中的所需控件。