• InfoPath表单托管代码示例


    前段时间项目中一个有多个View的Form需要使用代码来完成一些特殊的功能,网上的资料不太好找,现整理出来,全当抛砖引玉。注意:InfoPath编码思想比较特别,控件都是绑定到数据源上,修改的都是数据源,而不是通过控件的属性来修改。
    1、获取非主数据源
        XPathNavigator myNavigator = this.DataSources["SecondaryDataSource"].CreateNavigator();
        MessageBox.Show(myNavigator.OuterXml.ToString(),"Secondary Data Source XML");


    2、获取当前View的信息
         if (this.CurrentView.ViewInfo.Name == "ViewName")       //判断当前View名称
        { }

        在public void FormEvents_ViewSwitched(object sender, ViewSwitchedEventArgs e)事件中可以使用以上判断来对特定的View进行操作。

    3、获取/设置某个数据源的值,
         XPathNavigator root = this.MainDataSource.CreateNavigator();
         XPathNavigator nameField = root .SelectSingleNode("/my:myFields/my:MainName/my:name", NamespaceManager);
         nameField.SetValue("Hello");
         string >
    4、遍历Repeat控件,获取用户输入的数据
        string message="";
        XPathNavigator root = MainDataSource.CreateNavigator();
       
    XPathNodeIterator nameNodes = root.Select("/my:myFields/my:MainName/my:name", NamespaceManager);
        while (nameNodes.MoveNext())
        {
            message += nameNodes.Current.Value + System.Environment.NewLine;
        }

        MessageBox.Show(message);

    5、动态添加控件
        CurrentView.ExecuteAction(ActionType.XCollectionInsert, "Group_1");

    6、使数据源所对应的文本值处于选中状态
        XPathNavigator textNode = CreateNavigator().SelectSingleNode("/my:myFields/my:field1", NamespaceManager);
       
    CurrentView.SelectText(textNode);
        CurrentView.ExecuteAction(ActionType.Cut);

    7、调用WebService
        // Open connection.
        WebServiceConnection wsc = (WebServiceConnection)this.DataConnections["Main query"];
       
    // Create XmlDocuments.
        XmlDocument inputDocument = new XmlDocument();
        XmlDocument outputDocument = new XmlDocument();
        XmlDocument errorsDocument = new XmlDocument();
       
    // Load input document.
        inputDocument.LoadXml("<inputValue1>Test</inputValue1><inputValue2>5</inputValue2>");
       
    // Create XPathNavigator objects for documents.
        XPathNavigator inputNav = inputDocument.CreateNavigator();
        XPathNavigator outputNav = outputDocument.CreateNavigator();
        XPathNavigator errorsNav = errorsDocument.CreateNavigator();
       
    // Call Execute method.
        wsc.Execute(inputNav, outputNav, errorsNav);

      
          获取Repeat控件内部的数据时,我采用DataSet存储,因为我发现遍历每个Repeat时,无法遍历其下子控件的值。比如。Repeat DataTable有3个,子控件TextBox控件的值也有3个。通过XPathNodeIterator实例遍历DataTable的时候无法获取对应的TextBox的值,默认都是获取第一次出现的值,所以只好借助于DataRow分别遍历给不同的Column赋值。不知道园子里谁有更好的方法,请告知。谢谢


  • 相关阅读:
    小型数据库的选择(轻量级数据库)(转)
    MSSOAP与WebService
    SOAP和WSDL的一些必要知识 (转)
    几个小型数据库的比较
    常用的嵌入式数据库的比较
    webservice Quiz(Wsdl &Soap)
    ASP.Net获取文件的路径
    SOAP=RPC+HTTP+XML
    记录几个IP查询接口
    COM+组件注册方法
  • 原文地址:https://www.cnblogs.com/IsNull/p/1877884.html
Copyright © 2020-2023  润新知