我们可以使用InfoPath 2007创建表单,并使创建的表单既可以运行在InfoPath 2007客户端,也可以运行在网页浏览器中。在后者中,我们可以利用自定义操作来实现表单的参数传递,
我们可以使用InfoPath 2007创建表单,并使创建的表单既可以运行在InfoPath 2007客户端,也可以运行在网页浏览器中。在后者中,我们可以利用自定义操作来实现表单的参数传递,从而实现与业务数据目录(BDC)的集成。
不管我们是要传递参数到InfoPath 2007的表单文件还是浏览器,首先,我们都需要更新表单模板的Loading事件。Loading事件的LoadingEventArgs 类提供了一个InputParameters 属性。 该属性可以取得一个 IDictionary 对象,其中包含了输入参数(由启动表单文件的URL所指定)。
在本文中,将使用InfoPath 2007中带的“状态报告”示例来获取一个从浏览器的URL中传过来的参数。
Loading事件编程 Event
现在,我们给表单代码文件添加一个 Loading 事件。在工具菜单中,点编程,点Loading事件。然后我们使用InputParameters属性返回的Idictionary对象的TryGetValue方法来获取一个参数值。接着,我们使用XPathNavigator对象的SetValue方法来设置表单文件中相应结点的值。在下面的例子中,通过URL传递过来的CustomerID参数来设置项目一栏的值。该值由数据源中的projectName结点决定。
public void FormEvents_Loading(object sender, LoadingEventArgs e) {
string customerId = string.Empty;
try
{
e.InputParameters.TryGetValue("CustomerID", out customerId);
}
catch (Exception ex)
{
customerId = ex.Message.ToString();
}
finally
{
MainDataSource.CreateNavigator().SelectSingleNode
("/my:myFields/my:projectName", NamespaceManager).SetValue(customerId);
}
}
注:我们可以在添加代码前选择所要使用的编程语言。点工具菜单,点表单选项,点编程一节,然后就可以设置表单模板代码语言列表的值了。
部署表单模板
在浏览器的情况下,表单模板使用托管代码。因此,管理员需要进行一个部署的过程。首先,我们要将表单模板发布到一个网络共享位置。
步骤:
- 在InfoPaht 2007中,点文件菜单下的发布。
- 在发布向导的第一页中,点具有或不具有InfoPath Forms Services 的SharePoint服务器,点下一步。
- 在接下来的发布向导页中,在请输入SharePoint或InfoPath Forms Services网站的位置一栏中输入SharePoint站点的URL。点下一步。
- 在接下来的发布向导页中,确保经管理员核准的表单模板选项被选中,点下一步。
- 在接下来的发布向导页中,点浏览,导航到一个网络共享位置,输入StatusReport作为文件名,点保存。点下一步。
- 在接下来的发布向导页中,根据需要指定要发布的栏,点下一步。
- 在接下来的发布向导页中,点发布。
- 在接下来的发布向导页中,点关闭。
表单模板发布到网络共享位置后,服务器管理员就可以上传表单模板到InfoPath表单服务并在特定的WSSv3站点集上激活该表单模板了。
- 进入SharePoint 3.0管理中心。
- 在管理中心页面中,点应用程序管理标签。
- 在InfoPath Forms Services一节中,点管理表单模板。
- 在管理表单模板页面中,点上载表单模板。
- 点浏览,导航到刚刚发布到网络共享位置中的StatusReport.xsn,双击它。
- 点上载,确定。
- 等待上载完成后(状态从正在安装转为就绪),在StatusReport.xsn上的菜单中,点激活到网站集。
- 根据需要更改激活位置一节中的网站集下拉列表的值并点击确定。