现在的位置: 首页 > 综合 > 正文

通过编程方式在InfoPath 2010表单的下拉框修改事件中获取数据

2012年05月20日 ⁄ 综合 ⁄ 共 1942字 ⁄ 字号 评论关闭
文章目录

一个简单的例子,包括一段简短的代码,在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

抱歉!评论已关闭.