zoukankan      html  css  js  c++  java
  • VSTA InfoPath如何实现下拉列表联动

    最近使用InfoPath开发点东西,想实现两个下拉列表实现联动。

    需求如下:

    下拉列表field1值为A时,下拉列表field2选项有A1、A2

    下拉列表field1值为B时,下拉列表field2选项由B1、B2

    下面我们开始设计表单。

    1、创建两个下拉列表:field1、field2

    image

    2、field1列表中手工添加值A、B 这两个选项

    image

    3、设计XML

    <?xml version="1.0" encoding="utf-8" ?>
    <States>
        <State>
            <value>
                <string>A1</string>
            </value>
                    <value>
                <string>A2</string>
            </value>
        </State>
    </States>

    4、添加数据源

    点“工具”—〉“数据链接”—〉“新建”按钮—〉选择“新建连接”中的“仅接收数据”—〉点“下一步”

    image 

    选择“XML文档”—〉点“下一步”—〉选择浏览按钮,加载刚创建的XML文件—〉点“下一步”—〉点“下一步”

    —〉点“下一步”—〉点“完成”—〉点“关闭”

    image

    image 

    创建完后,我们可以在数据源中看到“DB” 辅助数据源

    image

    5、field2 绑定辅助数据源

    image

    6、创建field1 Changed事件

    image

    (注:工具—〉表单选项—〉编程中 可以选择编程语言,下面我们选择用C#)

    public void InternalStartup()
    {
        EventManager.XmlEvents["/my:myFields/my:field1"].Changed += new XmlChangedEventHandler(field1_Changed);
    }

    public void field1_Changed(object sender, XmlEventArgs e)
    {
        DataSource data = this.DataSources["DB"];

        XPathNavigator navigator = data.CreateNavigator().SelectSingleNode("//State/value");
        XPathNavigator lastRange = navigator.SelectSingleNode("//State/value");
        navigator.DeleteRange(lastRange);
        if (e.Site.CreateNavigator().SelectSingleNode("/my:myFields/my:field1", NamespaceManager).Value == "A")
        {
            navigator.InnerXml = "<value><string>A1</string></value><value><string>A2</string></value>";
        }
        else
        {
            navigator.InnerXml = "<value><string>B1</string></value><value><string>B2</string></value>";

        }
    }

    列表设置就到此结束,下面我们可以浏览下效果

    image  image

    根据评论,咱们添加规则,使联动能在浏览器上使用。

    操作如下:

    1、双击 field1下拉列表

    2、点“规则”按钮—〉点“添加”

    3、在规则1种,添加设置条件 field1=“A”   添加两个操作  field2=“A1”  field2=“A2 ”

    重复步骤2、3,添加规则2,添加设置条件 field1=“B”   添加两个操作  field2=“B1”  field2=“B2 ”  image

    image

  • 相关阅读:
    架构-LAMP特级学习(网站加速解决方案)
    架构-LAMP特级学习(网站大存储量解决方案)
    架构-LAMP特级学习(网站大访问量解决方案)
    Shell-学习笔记
    算法-随手写的冒泡排序
    算法-随手写的二分查找
    cocos2dx 3.x ccPositionTextureColor_vert与ccPositionTextureColor_noMVP_vert
    cocos2dx当节点存在缩放时要注意的问题
    cocos2dx 3.x draw debug
    cocos2dx 3.x ccDrawLine一个坑
  • 原文地址:https://www.cnblogs.com/Anlycp/p/1523201.html
Copyright © 2011-2022 走看看