zoukankan      html  css  js  c++  java
  • 强制Infopath每行单选框单选(原创)

    using Microsoft.Office.InfoPath;
    using System;
    using System.Xml;
    using System.Xml.XPath;

    namespace 模板2
    {
        public partial class FormCode
        {
            // 启用浏览器功能的表单不支持成员变量。
            // 请使用代码从 FormState 词典
            // 写入和读取这些值,如下所示:
            //
           

            // 注意: 以下是 Microsoft Office InfoPath 所需的过程。
            // 可以使用 Microsoft Office InfoPath 对其进行修改。
            public void InternalStartup()
            {
                EventManager.XmlEvents["/my:myFields/my:group1/my:group2/my:field1"].Changed += new XmlChangedEventHandler(field1_Changed);
                EventManager.XmlEvents["/my:myFields/my:group1/my:group2/my:field1"].Validating += new XmlValidatingEventHandler(field1_Validating);
                EventManager.FormEvents.Loading += new LoadingEventHandler(FormEvents_Loading);
            }

            //private bool _isLooped = false;

            public void SetNull(XPathNodeIterator iter)
            {
                while (iter.MoveNext())
                {
                    {
                        iter.Current.SelectSingleNode("my:field1", NamespaceManager).SetValue("");
                    }
                }
                FormState["isLooped"] = true;
            }

            public void field1_Changed(object sender, XmlEventArgs e)
            {
               
                XPathNavigator nav = (XPathNavigator)sender;
                if (nav.LocalName != "field1")
                    return;
                if (nav.Value == "")
                    return;
                try
                {
                    XPathNavigator xpn = this.CreateNavigator().SelectSingleNode("/my:myFields/my:group1", NamespaceManager);
                    XPathNodeIterator iter = xpn.SelectChildren(XPathNodeType.Element);


                    if ((bool)FormState["isLooped"] == false)
                    {
                        SetNull(iter);
                        nav.SetValue("Y");
                    }
                    FormState["isLooped"] = false;
                }
                catch
                { }
                finally
                {

                }
            }

            public void field1_Validating(object sender, XmlValidatingEventArgs e)
            {
                // 在此处编写代码。
            }

            public void FormEvents_Loading(object sender, LoadingEventArgs e)
            {
                // 在此处编写代码。
                FormState["isLooped"] = false;
            }
        }
    }

    关于作者: 王昕(QQ:475660) 在广州工作生活30余年。十多年开发经验,在Java、即时通讯、NoSQL、BPM、大数据等领域较有经验。
    目前维护的开源产品:https://gitee.com/475660
  • 相关阅读:
    【NOIP2007】守望者的逃离
    20200321(ABC)题解 by 马鸿儒 孙晨曦
    20200320(ABC)题解 by 王一帆
    20200319(ABC)题解 by 王一帆 梁延杰 丁智辰
    20200314(ABC)题解 by 董国梁 蒋丽君 章思航
    20200309(ABC)题解 by 梁延杰
    20200307(DEF)题解 by 孙晨曦
    20200306(ABC)题解 by 孙晨曦
    20200305(DEF)题解 by 孙晨曦
    20200303(ABC)题解 by 王锐,董国梁
  • 原文地址:https://www.cnblogs.com/starcrm/p/1519188.html
Copyright © 2011-2022 走看看