/// <summary>
 /// 获取图表默认的配置信息。
 /// </summary>
 /// <returns></returns>
 public Dictionary <string, MB.WinBase.Common.ChartViewCfgInfo> GetDefaultChartViewCfg()
 {
     if (_ChartViewCfg == null)
     {
         RuleClientLayoutAttribute rAtt = _ClientRuleConfig.ClientLayoutAttribute;
         if (rAtt == null || string.IsNullOrEmpty(rAtt.UIXmlConfigFile))
         {
             return(null);
         }
         _ChartViewCfg = LayoutXmlConfigHelper.Instance.getChartViewCfg(rAtt.UIXmlConfigFile);
     }
     return(_ChartViewCfg);
 }
 /// <summary>
 /// 获取主表默认的样式信息。
 /// </summary>
 /// <returns></returns>
 public Dictionary <string, MB.WinBase.Common.StyleConditionInfo> GetDefaultStyleConditions()
 {
     if (_DefaultStyleConditions == null)
     {
         RuleClientLayoutAttribute rAtt = _ClientRuleConfig.ClientLayoutAttribute;//AttributeConfigHelper.Instance.GetClientRuleSettingAtt(_ClientRuleConfig);
         if (rAtt == null || string.IsNullOrEmpty(rAtt.UIXmlConfigFile))
         {
             throw new Exceptions.RuleClientConfigException(_ClientRuleConfig);
         }
         _DefaultStyleConditions = LayoutXmlConfigHelper.Instance.GetStyleConditions(rAtt.UIXmlConfigFile);
     }
     return(_DefaultStyleConditions);
 }
        /// <summary>
        /// 获取主表默认数值列信息。
        /// </summary>
        /// <returns></returns>
        public Dictionary <string, MB.WinBase.Common.ColumnPropertyInfo> GetDefaultColumns()
        {
            if (_ClientRuleConfig == null)
            {
                throw new MB.Util.APPException("ClientRuleConfig 的 配置不能为空", Util.APPMessageType.SysErrInfo);
            }

            if (_DefaultColumns == null)
            {
                RuleClientLayoutAttribute rAtt = _ClientRuleConfig.ClientLayoutAttribute;// AttributeConfigHelper.Instance.GetClientRuleSettingAtt(_ClientRuleConfig);
                if (rAtt == null || string.IsNullOrEmpty(rAtt.UIXmlConfigFile))
                {
                    throw new Exceptions.RuleClientConfigException(_ClientRuleConfig);
                }

                _DefaultColumns = LayoutXmlConfigHelper.Instance.GetColumnPropertys(rAtt.UIXmlConfigFile);
            }
            return(_DefaultColumns);
        }
        /// <summary>
        /// 加载动态列的配置文件
        /// </summary>
        /// <param name="ruleConfig"></param>
        /// <returns></returns>
        public DynamicGroupCfgInfo LoadDynamicGroupCfg(MB.WinBase.IFace.IClientRuleConfig ruleConfig)
        {
            RuleClientLayoutAttribute rAtt = ruleConfig.ClientLayoutAttribute;

            if (rAtt == null || !rAtt.IsDynamicGroupEnabled)
            {
                throw new MB.Util.APPException(string.Format("要使用动态聚组,必须配置RuleClientLayoutAttribute中的DynamicGroupXmlConfig属性。请检查:{0}是否已经配置!", ruleConfig.GetType().FullName));
            }

            string xmlCfgFile = rAtt.UIXmlConfigFile;
            DynamicGroupCfgHelper cfgHelper = new DynamicGroupCfgHelper(xmlCfgFile);

            //将最终呈现聚组的列信息汇总到 聚组配置的列信息上
            Dictionary <string, ColumnPropertyInfo> resultCols = cfgHelper.GetResultColPropertys();

            DynamicGroupCfgInfo cfg = new DynamicGroupCfgInfo();

            cfg.MainEntityColInfo   = cfgHelper.GetColProInfos(true);
            cfg.DetailEntityColInfo = cfgHelper.GetColProInfos(false);
            cfg.MainEntityInfo      = cfgHelper.GetEntityInfo(true);
            cfg.DetailEntityInfo    = cfgHelper.GetEntityInfo(false);
            cfg.RelationInfo        = cfgHelper.GetRelationInfo();
            if (cfg.RelationInfo == null)
            {
                MB.Util.TraceEx.Write("[动态聚组配置]-由于RelationInfo的信息没有配置,DetailEntityInfo强制设置为空");
                cfg.DetailEntityInfo = null;
            }


            #region 配置验证
            if (cfg.MainEntityColInfo != null)
            {
                validateColInfo(cfg.MainEntityColInfo);
            }

            if (cfg.DetailEntityColInfo != null)
            {
                validateColInfo(cfg.DetailEntityColInfo);
            }

            if (cfg.RelationInfo != null)
            {
                foreach (DynamicGroupRelationInfo relationInfo in cfg.RelationInfo.Values)
                {
                    if (string.IsNullOrEmpty(relationInfo.Column) ||
                        string.IsNullOrEmpty(relationInfo.WithColumn))
                    {
                        throw new MB.Util.APPException("动态聚组配置Relation中的Column和WithColumn属性不能为空");
                    }
                }
            }

            if (cfg.MainEntityInfo != null)
            {
                if (string.IsNullOrEmpty(cfg.MainEntityInfo.Name))
                {
                    throw new MB.Util.APPException("动态聚组配置MainEntity中的Name属性不能为空");
                }
            }

            if (cfg.DetailEntityInfo != null)
            {
                if (string.IsNullOrEmpty(cfg.DetailEntityInfo.Name))
                {
                    throw new MB.Util.APPException("动态聚组配置DetailEntity中的Name属性不能为空");
                }
            }
            #endregion

            return(cfg);
        }