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
  • 相关阅读:
    Android获取手机内存和sd卡相关信息
    总结(创建快捷方式等)
    正则是个好东西
    Android自定义AlertDialog
    Eclipse生成author等注释
    day18 io多路复用
    json 模块
    re 模块
    random 模块
    hashlib 模块
  • 原文地址:https://www.cnblogs.com/starcrm/p/1519188.html
Copyright © 2011-2022 走看看