private string GetQueryField(string entityName, DataAreaField dataField)
        {
            string alias     = this.GetFieldAlias(entityName);
            string fieldName = dataField.Name;

            if (!string.IsNullOrEmpty(alias))
            {
                fieldName = alias + "." + fieldName;
            }
            else
            {
                fieldName = entityName + "." + fieldName;
            }

            switch (dataField.SummaryItemType)
            {
            case SummaryItemType.Average:
                return(string.Format("AVG({0})", fieldName));

            case SummaryItemType.Count:
                return(string.Format("COUNT({0})", fieldName));

            case SummaryItemType.Max:
                return(string.Format("MAX({0})", fieldName));

            case SummaryItemType.Min:
                return(string.Format("MIN({0})", fieldName));

            case SummaryItemType.Sum:
                return(string.Format("SUM({0})", fieldName));

            case SummaryItemType.None:
            default:
                return(fieldName);
            }
        }
示例#2
0
        /// <summary>
        /// 根据Grid得到动态聚组的最终结果,用来传递到服务端
        /// </summary>
        /// <param name="dyUIColumns">用来保存Grid的当前状态</param>
        /// <returns>动态聚组设定,用来传递到服务端的</returns>
        public MB.Util.Model.DynamicGroupSetting GetDynamicGroupSetting(ref List <DynamicGroupUIColumns> dyUIColumns)
        {
            //用到的全局变量
            DynamicGroupCfgInfo dyConfigInfo = _DynamicCfgInfo;
            GridControlEx       grid         = _GirdControl;

            DynamicGroupSetting setting = new DynamicGroupSetting();

            //设置实体
            setting.EntityInfos.MainEntity   = dyConfigInfo.MainEntityInfo;
            setting.EntityInfos.DetailEntity = dyConfigInfo.DetailEntityInfo;

            //设置关系
            if (_DynamicCfgInfo.RelationInfo != null)
            {
                setting.RelationInfos = _DynamicCfgInfo.RelationInfo.Values.ToList <DynamicGroupRelationInfo>();
            }

            BindingList <DynamicGroupUIColumns> uiColList = grid.DataSource as BindingList <DynamicGroupUIColumns>;

            foreach (DynamicGroupUIColumns column in uiColList)
            {
                dyUIColumns.Add(column);

                if (!column.SELECTED)
                {
                    continue;
                }

                string entityName = column.ENTITY_NAME;
                string colName    = column.COLUMN_NAME;
                if (string.IsNullOrEmpty(column.AGG_TYPE))
                {
                    //对分组列做处理
                    if (setting.GroupFields.ContainsKey(entityName))
                    {
                        setting.GroupFields[entityName].Add(colName);
                    }
                    else
                    {
                        var list = new List <string>();
                        list.Add(colName);
                        setting.GroupFields.Add(entityName, list);
                    }
                }
                else
                {
                    //对聚组列做处理
                    DataAreaField dataField = new DataAreaField();
                    dataField.Name            = colName;
                    dataField.Description     = column.COLUMN_DESCRIPTION;
                    dataField.SummaryItemType = (MB.Util.Model.SummaryItemType)Enum.Parse(typeof(MB.Util.Model.SummaryItemType), column.AGG_TYPE.ToString(), true);

                    if (string.Compare(dyConfigInfo.MainEntityInfo.Name, entityName) == 0)
                    {
                        dataField.DataType          = dyConfigInfo.MainEntityColInfo[colName].DataType;
                        dataField.EntityName        = entityName;
                        dataField.EntityDescription = dyConfigInfo.MainEntityInfo.Description;
                        if (!string.IsNullOrEmpty(column.AGG_CONDITION_OPERATOR) && !string.IsNullOrEmpty(column.AGG_VALUE))
                        {
                            dataField.ConditionOperator = (DynamicGroupConditionOperator)Enum.Parse(typeof(DynamicGroupConditionOperator), column.AGG_CONDITION_OPERATOR);
                            dataField.ConditionValue    = column.AGG_VALUE;
                        }
                    }
                    else
                    {
                        if (dyConfigInfo.DetailEntityInfo != null)
                        {
                            dataField.DataType          = dyConfigInfo.DetailEntityColInfo[colName].DataType;
                            dataField.EntityName        = entityName;
                            dataField.EntityDescription = dyConfigInfo.DetailEntityInfo.Description;
                            if (!string.IsNullOrEmpty(column.AGG_CONDITION_OPERATOR) && !string.IsNullOrEmpty(column.AGG_VALUE))
                            {
                                dataField.ConditionOperator = (DynamicGroupConditionOperator)Enum.Parse(typeof(DynamicGroupConditionOperator), column.AGG_CONDITION_OPERATOR);
                                dataField.ConditionValue    = column.AGG_VALUE;
                            }
                        }
                    }

                    if (setting.DataAreaFields.ContainsKey(entityName))
                    {
                        setting.DataAreaFields[entityName].Add(dataField);
                    }
                    else
                    {
                        var list = new List <DataAreaField>();
                        list.Add(dataField);
                        setting.DataAreaFields.Add(entityName, list);
                    }
                }
            }

            return(setting);
        }