zoukankan      html  css  js  c++  java
  • infopath:InfoPath 上传多附件解决思路方法

    效果图就是这样了下面来看看终点代码部分

      代码部分主要技术点就是infopath附件分解和对infopath重复表操作

      命名空间引用

      usingMicrosoft.Office.InfoPath;

      using;

      using.Xml;

      using.Xml.XPath;

      using.Windows.Forms;

      using.Text;

      首先是注册两个按钮事件

    publicvoidInternalStartup
        {
          ((ButtonEvent)EventManager.ControlEvents["CTRL12_5"]).ClickedClickedEventHandler(CTRL12_5_Clicked);
          ((ButtonEvent)EventManager.ControlEvents["CTRL18_5"]).ClickedClickedEventHandler(CTRL18_5_Clicked);
        }


      编写上传按钮事件主要处理是文件分解上传以及重复表删除增加

    publicvoidCTRL12_5_Clicked(objectsender,ClickedEventArgse)
        {
          //在此处编写代码 
          XPathNavigatordomNav=MainDataSource.CreateNavigator;
          XPathNodeIteratorrows=domNav.Select("/my:myFields/my:group3/my:group5",NamespaceManager);
          XPathNodeIteratorrows1;
          myNamespace=NamespaceManager.LookupNamespace("my");
          while(rows.MoveNext)
          {
            rows1=domNav.Select("/my:myFields/my:group6/my:group7",NamespaceManager);
            attachment=rows.Current.SelectSingleNode("my:attachment",NamespaceManager).Value;
            attachmentBytes=Convert.FromBase64String(attachment);
            namebufferlen=attachmentBytes[20]*2;
            fileNameBuffer=[namebufferlen];
            //Theactualfilenamestartsatposition24
            for(i=0;i<namebufferlen;i)
            {
              fileNameBuffer[i]=attachmentBytes[24+i];
            }
            //originalfilenameminusthelastcharacter!
            charasciiChars=UnicodeEncoding.Unicode.GetChars(fileNameBuffer);
            fileName=(asciiChars);
            fileName=fileName.Sub(0,fileName.Length-1);
            //.gif' />Name.Add(fileName);
            //Thefileislocatedaftertheheader,whichis24slong
            //plusthelengthofthefilename.
            fileContent=[attachmentBytes.Length-(24+namebufferlen)];
            for(i=0;i<fileContent.Length;i)
            {
              fileContent[i]=attachmentBytes[24+namebufferlen+i];
            }
            APWS.AgilePartsapws=附件.APWS.AgileParts;
            savePath=@"http://ascentn-moss:8080/Shared%20Documents";
            apws.Credentials=.Net.CredentialCache.DefaultCredentials;
            attachUrl=apws.UploadFileToSPS2(savePath+"/"+fileName,true,fileContent);
            k=0;
            (rows1.Count0)
              k=1;
            
              k=rows1.Count+1;
      
            using(XmlWriterwriter=MainDataSource.CreateNavigator.SelectSingleNode("/my:myFields/my:group6",NamespaceManager).AppendChild)
            {
              writer.WriteStartElement("group7",myNamespace);
              writer.WriteElementString("fieldID",myNamespace,k.);
              writer.WriteElementString("fieldURL",myNamespace,attachUrl);
              writer.WriteElementString("fieldNAME",myNamespace,fileName);
              writer.WriteEndElement;
              writer.Close;
            }
            
          }
          group2NodesCount=rows.Count;
          XPathNavigatorfirstGroup2NodeNav=domNav.SelectSingleNode("/my:myFields/my:group3/my:group5[1]",
          NamespaceManager);
          XPathNavigatorlastGroup2NodeNav=domNav.SelectSingleNode("/my:myFields/my:group3/my:group5["+group2NodesCount.+"]",NamespaceManager);
          firstGroup2NodeNav.DeleteRange(lastGroup2NodeNav);
        }




      删除事件主要处理了对文档库文件删除以及infopath表单重复表行删除都是比较基本操作

    publicvoidCTRL18_5_Clicked(objectsender,ClickedEventArgse)
        {
          //在此处编写代码
          strfileUrl=e.Source.SelectSingleNode("/my:myFields/my:group6/my:group7/my:fieldURL",NamespaceManager).Value;
          SPSecurity.RunWithElevatedPrivileges(delegate
          {
            try
            {
              using(SPSitemySite=SPSite("http://ascentn-moss:8080"))
              {
                mySite.AllowUnsafeUpdates=true;
                SPWebwebs=mySite.OpenWeb;
                webs.AllowUnsafeUpdates=true;
                webs.GetFile(strfileUrl).Delete;
              }
            }
            catch(Exceptionex)
            {
              throwex;
            }
          });
          e.Source.DeleteSelf;
        }


      到这里基本东西就是这些了有关infopath表单设计这里就不提了
  • 相关阅读:
    Python3学习之路~8.5 SocketServer实现多并发
    Python3学习之路~8.4 利用socket实现文件传送+MD5校验
    [jzyzoj2021]lca模板题
    [BZOJ4542] [JZYZOJ2014][Hnoi2016] 大数(莫队+离散化)
    BZOJ3289[JZYZOJP2018]: Mato的文件管理 莫队+树状数组+离散化
    离散化的后续
    数据离散化 ( 以及 stl 中的 unique( ) 的用法 )+ bzoj3289:Mato的文件管理
    stl upper_bound()
    [BZOJ 3720][JZYZOJ 2016]gty的妹子树 强制在线 树分块/树套树
    所以学树分块的时候为什么要看vector啊sjb
  • 原文地址:https://www.cnblogs.com/IsNull/p/1800923.html
Copyright © 2011-2022 走看看