zoukankan      html  css  js  c++  java
  • .Net 关于 InfoPath 的基本使用

      最近几天接触微软的  InfoPath 表单工具,结合VS 使用,遇到的一些问题与解决方法,记录一下,百度上的内容很少,或许我根本不知道咋搜,所有也留一个网页帮助自己使用当然使用的时候碰到了好几个坑:

      限制: infoPath 只支持 VS 2012 这个版本的,我安得 2013 不能用哎

          在 ‘开发工具’ --‘代码编译器’  会让你安装一个 vs2012 Tools 必须安装,因为要用这个功能开发

         就是 infoPath 表单文件  不要直接打开 会告诉你签名啥的,   不要慌 关了,右键点击设计一定要

         vs中 加断点,提示断点无法命中,注意保存infoPath 的时候 一定不要出现 中文,原因在这里。

    页面元素:

      像微软的东西大概使用方法都是差不多的,快捷键啥的,新建文件就不说了,按部就班的点就可以了。表单工具吗,首先就是创建表单,创建一些控件,就像winForm一样使用,在表单上点击产生此对象,按钮,下拉框,文本框这类的。

      控件生成之后 就可以右键点击控件先说

      文本框属性: 默认值、文本框大小、文本框类型、是否为空 、、、这样一些列的设置。

      更改控件类型: 修改控件类型 如变成多选按钮啥的。

      更改绑定: 这个就可以理解为绑定一个域元素,也就相当于一个公共变量。 软件右侧会出现 域 操作窗口,里面包括当前 表单 myFields 对应的 域元素。

    域元素:

    然后就是域元素的,  其中的域元素可以拖拽到表单中生成对应类型的 控件,当然可以把 所有 域元素 放到myFields文件下,也可以像这样分组放开, 右键myfields 可以添加 分组或者控件。本人还是比较建议直接放到myFields 文件下,这样以后使用会简单的多,就是会看起来比较乱。

      当这是右键域元素时:我感觉最重要的3个点就是 规则,属性,复制Xpath,

      规则:就是制定 域控件中的 逻辑判断,比如值不能大于多少啥的。

      属性:这个则跟之前 右键控件 基本相同。

      复制Xpath: 这个东西很简单 ,你点击一下然后 复制在文本上,你就可以看出是个路径:/my:myFields/my:UserInfo/my:Submitter.Name  也就是以后再vs中 获取域元素时使用的路径(仅限于多层组的情况下)

      

      我使用过的控件 感觉有一些注意的就是 :

      下拉列表:需要从下拉列表属性 中设置一下 从外部数据源获取,选择添加 ,选sql server,之后就一直点,然后就是 配置值跟 显示名称。

      按钮: 一般情况下  的控件事件都是 change 事件, 按钮是单机事件需要 在按钮属性中  编辑代码,然后会在vs中自动生成。

      重复表: 这个一边用在 添加多条数据, 会自动生成一个大组,包一小组,获取 值使用foreach,还是获取节点到 小组 ,

     XPathNodeIterator NodeIter = this.MainDataSource.CreateNavigator().Select("/my:myFields/my:组1/my:组2", this.NamespaceManager);

    然后便利这个值

                foreach (XPathNavigator myf in NodeIter)
                {
                    XPathNavigator n1 = myf.SelectSingleNode("my:域1", NamespaceManager);
                    XPathNavigator n2 = myf.SelectSingleNode("my:域2", NamespaceManager);
                    XPathNavigator n3 = myf.SelectSingleNode("my:域3", NamespaceManager);
    
                }

    注意 类型,便利的值, 直接填my: 域元素。   这时有个疑惑不过加了断点就没问题了,   当增加多个表行 之后 获取 元素值,都在myf 中 ,便利一次为一行。

    下拉列表级联

      前一阵子涉及到下拉列表级联问题,目前我本人 学会两种方式,能完成类似省份,市县 的这种关系。

      第一种: 用 页面中下拉列表属性中的 数据库数据源 中的“项”来 添加数据筛选,  第一list 为主,他的值作为第二个list 筛选的依据,不过 这样第二个列表的value和Key 都会只能选择 筛选项的 值。

      第二种:就是用代码了  通过list 的change 事件   来获取当前list的 值,  再获取list2 的 Navigator 对象 ,赋值这样。看代码一下吧

            public void Trusit_2E_abilityType_Changed(object sender, XmlEventArgs e)
            {
                // 在此处编写代码,用于更改主数据源。
            获取list 2 的对象,然后之set为“”
    //从数据库取得列表 AdoQueryConnection myAdoQueryConn = (AdoQueryConnection)(this.DataConnections["表名"]); myAdoQueryConn.Command = " select id,name from 表名where parent='" + e.NewValue + "' order by name "; myAdoQueryConn.Execute(); }

    第二种 就有个 疑问就是 他如何付给list2 值 的,一直不太清楚

  • 相关阅读:
    NOIP2016 蚯蚓 题解
    BZOJ 1294 围豆豆 题解
    POJ1852 Ants 题解
    BZOJ 1131 [POI2008] STA-Station 题解
    HDU 5963 朋友 题解
    Codeforces 1292C Xenon's Attack on the Gangs 题解
    Emergency Evacuation 题解
    P4408 逃学的小孩 题解
    UVA11300 Spreading the Wealth 题解
    P2882 Face The Right Way G 题解
  • 原文地址:https://www.cnblogs.com/nnqwbc/p/7448187.html
Copyright © 2011-2022 走看看