博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重复表的复制操作
阅读量:4134 次
发布时间:2019-05-25

本文共 2857 字,大约阅读时间需要 9 分钟。

using Microsoft.Office.InfoPath;

using System;
using System.Xml;
using System.Xml.XPath;

namespace copytable

{
    public partial class FormCode
    {
        // 注意: 以下是 Microsoft Office InfoPath 所需的过程。
        // 可以使用 Microsoft Office InfoPath 对其进行修改。
        public void InternalStartup()
        {
            EventManager.XmlEvents["/my:myFields/my:group1/my:group2"].Changed += new XmlChangedEventHandler(group2_Changed);
        }

        public void group2_Changed(object sender, XmlEventArgs e)

        {
            DelRange("/my:myFields/my:group3", "my:group4");

            string strExpression = @"/my:myFields/my:group1/my:group2[my:check1='Y']";

            string toNav = "/my:myFields/my:group3/my:group4[last()]";
            string[] fromNodes ={ "my:field2", "my:field3" };
            string[] toNodes ={ "my:field4", "my:field5" };
            copyTable(strExpression, toNav, fromNodes, toNodes);

            AddBlank("/my:myFields/my:group3/my:group4[last()]");

        }

        public void copyTable(string strExpression, string toNav, string[] fromNodes, string[] toNodes)

        {
            XPathNavigator xn = MainDataSource.CreateNavigator();
            XPathNodeIterator itor = xn.Select(strExpression, NamespaceManager);
            XPathNavigator to = this.MainDataSource.CreateNavigator().SelectSingleNode(toNav, this.NamespaceManager);
            XPathNavigator clone = null;

            while (itor.MoveNext())

            {
                {
                    clone = to.Clone();
                    for (int i = 0; i < fromNodes.Length;i++ )
                    {
                        to.SelectSingleNode(toNodes[i], NamespaceManager).SetValue(itor.Current.SelectSingleNode(fromNodes[i], NamespaceManager).Value);
                    }
                    to.InsertBefore(clone);
                }

            }

        }

        public void DelRange(string body, string node)

        {
            try
            {
                XPathNavigator parent = this.MainDataSource.CreateNavigator().SelectSingleNode(body, this.NamespaceManager);

                if (parent != null)

                {

                    XPathNodeIterator rowitor = parent.Select(node, this.NamespaceManager);

                    XPathNavigator xn = this.MainDataSource.CreateNavigator();

                    XPathNavigator n1 = xn.SelectSingleNode(body + "/" + node + "[1]", this.NamespaceManager);

                    XPathNavigator n2 = n1.SelectSingleNode(body + "/" + node + "[" + (rowitor.Count - 1) + "]", this.NamespaceManager);
                    xn.MoveTo(n1);

                    if (rowitor.Count > 1)

                    {
                        xn.DeleteRange(n2);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }

        public void DeleteAll(string body,string node)

        {

            XPathNavigator parent = this.MainDataSource.CreateNavigator().SelectSingleNode(body, this.NamespaceManager);

            if (parent != null)

            {

                XPathNodeIterator rowitor = parent.Select(node, this.NamespaceManager);

                if (rowitor.Count > 0)
                {
                    for (int i = 0; i < Convert.ToInt32(rowitor.Count)-1; i++)
                    {
                        rowitor.Current.DeleteSelf();
                        rowitor.MoveNext();

                    }

                }
            }
 

        }

        public void AddBlank(string node)

        {
            try
            {
                XPathNavigator group = this.MainDataSource.CreateNavigator().SelectSingleNode(node, this.NamespaceManager);
                group.SelectSingleNode("my:field4", NamespaceManager).SetValue("");
                group.SelectSingleNode("my:field5", NamespaceManager).SetValue("");
                group.SelectSingleNode("my:field6", NamespaceManager).SetValue("");

            }

            catch (Exception ex)
            {
                throw ex;
            }

        }

    }
}

转载地址:http://appvi.baihongyu.com/

你可能感兴趣的文章
vue项目打包后无法运行报错空白页面
查看>>
Vue 解决部署到服务器后或者build之后Element UI图标不显示问题(404错误)
查看>>
element-ui全局自定义主题
查看>>
facebook库runtime.js
查看>>
vue2.* 中 使用socket.io
查看>>
openlayers安装引用
查看>>
js报错显示subString/subStr is not a function
查看>>
高德地图js API实现鼠标悬浮于点标记时弹出信息窗体显示详情,点击点标记放大地图操作
查看>>
初始化VUE项目报错
查看>>
vue项目使用安装sass
查看>>
HTTP和HttpServletRequest 要点
查看>>
在osg场景中使用GLSL语言——一个例子
查看>>
laravel 修改api返回默认的异常处理
查看>>
laravel事务
查看>>
【小红书2017年笔试】求一个数组中平均数最大的子数组
查看>>
Linux基础系列-Kernel 初始化宏
查看>>
<iOS>关于自定义description的一点用法
查看>>
Unix 命令,常用到的
查看>>
DLL中建立进程共享数据段需要注意的语法问题
查看>>
服务器端技术----Http请求的处理过程
查看>>