设为首页 收藏本站
查看: 947|回复: 0

[经验分享] SharePoint向InfoPath 2007表单传递参数

[复制链接]

尚未签到

发表于 2015-9-26 14:07:30 | 显示全部楼层 |阅读模式
  我们可以使用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上的菜单中,点激活到网站集。
根据需要更改激活位置一节中的网站集下拉列表的值并点击确定。
创建自定义业务数据目录操作
  我们必须更新BDC元数据文件,以便包含一个自定义操作。本节中我们将使用MSDN Visual系列中前面章节创建的文件。下面的示例添加了一个自定义操作到已存在的Customer实体(在</Entity>结束标记前) 来在浏览器中启动一个状态报告表单并传递参数CustomerID。
  注:您需要替换URL属性中的URL_to_WebApplication为实际Web应用程序的URL。
  
<Actions>
    <Action Name="Status Report" Position="1" IsOpenedInNewWindow="true" Url=
      "URL_to_WebApplication/_layouts/formserver.aspx?xsnlocation=
       /formservertemplates/statusreport.xsn&amp;
      openin=browser&amp;CustomerID=">
        <ActionParameters>
            <ActionParameter Name="customerID" Index="0"/>
        </ActionParameters>
    </Action>
</Actions>
  注:请确保在保存并上传元数据文件到BDC共享服务前已经提升了LobSystem元素的Version属性值。  
  上传元数据文件到BDC共享服务
  在元数据文件更新完成后,打开管理中心,点左侧导航栏中的共享服务(通常名为SharedServices1)。在BDC一节中,点导入应用程序定义。点浏览,找到刚刚修改完成的元数据文件,双击。其他的应用程序定义项都用默认值就好,点导入。
  添加业务数据列表部件并调用Status Report操作
  在我们的SharePoint站点中添加业务数据列表部件,并与我们定义的Customer实体相关联。OK,现在我们就可以点击Customer名称上下列列表中的Status Report项了。
  图1. 调用 Status Report 操作
DSC0000.jpg
  综述
  在InfoPath 2007中,我们可以构建表单来接收来自命令行或浏览器URL的参数。在后者中,我们可以定义自定义操作传递参数给一个浏览器中的表单文件从而实现与业务数据目录的整合。为此,我们需要做下面几件事:
  * 添加自定义代码到表单模板的Loading事件,通过InputParameters属性返回Idictionary,并利用其TryGetValue方 法获取参数值。当确实得到参数值后,我们可以使用XpathNavigator对象的SetValue方法更新表单数据源中的某个结点值。
  * 上载表单模板到InfoPath Forms Services并激活到SharePoint网站集。使用InfoPath 发布向导来保存表单模板到一个网络共享位置。然后,服务器管理员在管理中心里进行上载和激活操作。
  * 添加Action元素到业务数据目录元数据文件来指向浏览器表单的URL并传递参数。记住,在将新的应用程序定义文件导入到管理中心里之前,必须先提升LobSystem元素的版本号。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-119179-1-1.html 上篇帖子: Sharepoint学习笔记—习题系列--70-573习题解析 下篇帖子: SharePoint高级系列索引页面
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表