zoukankan      html  css  js  c++  java
  • 通过编程方式在InfoPath 2010表单的下拉框修改事件中获取数据

    一个简单的例子,包括一段简短的代码,在InfoPath 2010表单中下拉框的修改事件里从一个数据源获取数据。

    表单

    样例表单本身很简单,只有两个控件,如下图所示:

    在mydropdown下拉框属性中,添加几个值,为将要获取的SharePoint列表中已有的几个列表项的ID。

    另外,在浏览器表单选项卡中,设置始终获取数据。以便在下拉框值发生修改时,自动获取数据。

    设置好表单布局后,点击功能区“数据”选项卡中的“数据连接”,设置一个数据源。

    在弹出的“数据连接”对话框中,点击“添加...”。打开数据连接向导对话框。选择“接收数据”。

    下一步。选择“SharePoint库或列表”

    下一步。输入SharePoint网站地址。

    下一步。选择需要连接的列表。

    下一步。选择域。在下面的代码中,我们会用到Title,所以这里把它选中。

    一路下一步,直到完成该向导。将我们的数据连接命名为“MyDATASOURCE”。

    选中下拉框控件,点击功能区“开发工具”选项卡下控件事件组中的“Changed事件”。

    将打开VSTA集成开发环境。

    代码

    下面的代码中,InternalStartup()方法用于注册下拉框的修改事件,mydropdown_Changed()方法用于实际的从数据源获取数据...

    “MyDATASOURCE”是为了获取表单域field1的值,也就是来自SharePoint列表数据源(MyDATASOURCE)的SharePoint列表项标题。

    通过Web服务传递给数据源的参数是列表项ID,由下拉框的当前值决定。

    using Microsoft.Office.InfoPath;
    using System;
    using System.Xml;
    using System.Xml.XPath;
    
    namespace Getdatanamespace
    {
        public partial class FormCode
        {
    
            // 注意: 以下是 Microsoft InfoPath 所需的过程。
            // 可以使用 Microsoft InfoPath 对其进行修改。
            public void InternalStartup()
            {
                EventManager.XmlEvents["/my:myFields/my:mydropdown"].Changed += new XmlChangedEventHandler(mydropdown_Changed);
            }
    
            public void mydropdown_Changed(object sender, XmlEventArgs e)
            {
                // 在此处编写代码,用于更改主数据源。
                XPathNavigator form = MainDataSource.CreateNavigator();
    
                // 为Web服务调用和查询连接准备参数
                // 发送ID作为调用web服务的参数,用于访问该数据源
                DataSources["MyDATASOURCE"].CreateNavigator().SelectSingleNode("dfs:myFields/dfs:queryFields/q:SharePointListItem_RW/q:ID",NamespaceManager).SetValue(e.NewValue); 
                DataSources["MyDATASOURCE"].QueryConnection.Execute();
    
                // 基于web服务的响应创建一个 navigator
                XPathNavigator resultnav = DataSources["MyDATASOURCE"].CreateNavigator();
    
                // 用web服务响应中的数据设置字段的值
                XPathNavigator Field1 = form.SelectSingleNode("/my:myFields/my:field1", NamespaceManager);
                Field1.SetValue(resultnav.SelectSingleNode("/dfs:myFields/dfs:dataFields/d:SharePointListItem_RW/d:Title",NamespaceManager).Value);
    
            }
        }
    }
    
    

    运行

    代码编写完成后,可以直接通过F5运行,将自动打开表单预览界面。

    测试无误后,就可以发布到SharePoint表单库中了。

    点击左上角的“文件”选项卡,打开后台视图。选择“发布”下的“SharePoint服务器”

    跟随向导,一步步的进行就可以了。本例中,我们选择发布到表单库。

    完成!点击“在浏览器中打开此表单”。

    在SharePoint中运行的样子:

    参考资料

    Infopath 2010 form drop-down list change event get data programmatically

  • 相关阅读:
    fork操作
    PHP操作Memcached
    对nginx进行平滑升级
    Codeforces Round #457 (Div. 2) B
    codeforces Educational Codeforces Round 39 (Rated for Div. 2) D
    矩阵相乘
    求组合数板子
    斯特林(Stirling)公式 求大数阶乘的位数
    codeforces Gym 101572 I 有向图最小环路径
    Floyd算法——保存路径——输出路径 HDU1385
  • 原文地址:https://www.cnblogs.com/Sunmoonfire/p/1811936.html
Copyright © 2011-2022 走看看