Exemplo n.º 1
0
        protected List <Expression <Func <TEntity, bool> > > BuildWhereExpression <TEntity>(IViewModel viewModel, IList <string> where)
        {
            //将条件按照列组合起来
            Dictionary <UiColumnInfo, List <Condition> > dictConditions = new Dictionary <UiColumnInfo, List <Condition> >();

            foreach (var filter in where)
            {
                var ss = filter.Split(' ');
                if (ss.Length != 3)
                {
                    continue;
                }
                var columnInfo = viewModel.GetColumnInfo(ss[0]);
                var condition  = new Condition()
                {
                    Key = ss[1], Value = ss[2]
                };
                if (columnInfo != null)
                {
                    if (dictConditions.ContainsKey(columnInfo))
                    {
                        List <Condition> conditions = dictConditions[columnInfo];
                        conditions.Add(condition);
                    }
                    else
                    {
                        List <Condition> conditions = new List <Condition>();
                        conditions.Add(condition);
                        dictConditions[columnInfo] = conditions;
                    }
                }
            }


            List <Expression <Func <TEntity, bool> > > expressions = new List <Expression <Func <TEntity, bool> > >();

            foreach (var columnCondition in dictConditions)
            {
                ParameterExpression parameterExpression = ExpressionHelper.BuildParameterExpression(typeof(TEntity));
                UiColumnInfo        columnInfo          = columnCondition.Key;
                Expression <Func <TEntity, bool> > prediateExpression = BuildColumnConditionExpression(parameterExpression, typeof(TEntity), columnInfo, columnCondition.Value)
                                                                        as Expression <Func <TEntity, bool> >;
                if (prediateExpression != null)
                {
                    expressions.Add(prediateExpression);
                }
            }
            return(expressions);
        }
Exemplo n.º 2
0
        public virtual UiColumnInfo CreateColumInfo(string propertyName, string jsonPropertyName = null)
        {
            UiColumnInfo columnInfo = null;

            if (string.IsNullOrEmpty(jsonPropertyName))
            {
                columnInfo = new UiColumnInfo(propertyName);
            }
            else
            {
                columnInfo = new UiColumnInfo(propertyName, jsonPropertyName);
            }

            if (!_columnInfos.ContainsKey(columnInfo.Key))
            {
                _columnInfos.Add(columnInfo.Key, columnInfo);
            }
            return(columnInfo);
        }
Exemplo n.º 3
0
 protected virtual Expression BuildColumnConditionExpression(ParameterExpression parameterExpression, Type entityType, UiColumnInfo columnInfo, List <Condition> conditions)
 {
     if (columnInfo == null) //|| columnInfo.Searchable == false)
     {
         return(null);
     }
     return(ExpressionHelper.BuildColumnConditionExpression(parameterExpression, entityType, columnInfo.PropertyName, columnInfo.PropertyValueType, columnInfo.SearchMode, columnInfo.FilterMode, conditions, false));
 }
Exemplo n.º 4
0
        public virtual IViewModel AddViewModel([NotNull] Type clrType)
        {
            var viewModel = new ViewModel();

            var attributes = (UiClassColumnAttribute[])Attribute.GetCustomAttributes(clrType, UiClassColumnAttributeType);

            foreach (var attr in attributes)
            {
                if (string.IsNullOrEmpty(attr.EntityPropertyName) || string.IsNullOrEmpty(attr.EntityPropertyValueType))
                {
                    continue;
                }

                UiColumnInfo columnInfo = viewModel.CreateColumInfo(attr.EntityPropertyName, attr.QueryKey);
                columnInfo.PropertyValueType      = attr.EntityPropertyValueType;
                columnInfo.PropertyValue          = attr.EntityPropertyValue;
                columnInfo.DefaultContent         = attr.DefaultContent;
                columnInfo.DisplayName            = attr.DisplayName;
                columnInfo.Visible                = attr.Visible;
                columnInfo.Searchable             = attr.Searchable;
                columnInfo.SearchMode             = attr.SearchMode;
                columnInfo.Filterable             = attr.Filterable;
                columnInfo.FilterMode             = attr.FilterMode;
                columnInfo.ReferField             = attr.ReferField;
                columnInfo.ReferCondition         = attr.ReferCondition;
                columnInfo.ReferValueFormatMethod = attr.ReferValueFormatMethod;
                columnInfo.Orderable              = false;
                columnInfo.Weight         = attr.Weight;
                columnInfo.Width          = attr.Weight;
                columnInfo.FormatMethod   = attr.FormatMethod;
                columnInfo.OperationEvent = attr.OperationEvent;
            }

            foreach (var propertyInfo in clrType.GetProperties())
            {
                UiColumnAttribute     columnAttribute       = (UiColumnAttribute)Attribute.GetCustomAttribute(propertyInfo, UiColumnAttributeType);
                JsonPropertyAttribute jsonPropertyAttribute = (JsonPropertyAttribute)Attribute.GetCustomAttribute(propertyInfo, JsonPropertyAttributeType);
                DisplayNameAttribute  displayNameAttribute  = (DisplayNameAttribute)Attribute.GetCustomAttribute(propertyInfo, DisplayNameAttributeType);
                UiColumnInfo          columnInfo            = viewModel.CreateColumInfo(columnAttribute?.EntityPropertyName ?? propertyInfo.Name, jsonPropertyAttribute?.PropertyName ?? propertyInfo.Name.ToCamelCase());
                columnInfo.DefaultContent         = columnAttribute?.DefaultContent;
                columnInfo.DisplayName            = columnAttribute?.DisplayName ?? displayNameAttribute?.DisplayName;
                columnInfo.PropertyValueType      = columnAttribute?.EntityPropertyValueType ?? Type.GetTypeCode(propertyInfo.PropertyType).ToString();
                columnInfo.PropertyValue          = columnAttribute?.EntityPropertyValue;
                columnInfo.Visible                = columnAttribute != null ? columnAttribute.Visible : true;
                columnInfo.Orderable              = columnAttribute != null ? columnAttribute.Orderable : false;
                columnInfo.Searchable             = columnAttribute != null ? columnAttribute.Searchable : false;
                columnInfo.SearchMode             = columnAttribute != null ? columnAttribute.SearchMode : SearchMode.Normal;
                columnInfo.Filterable             = columnAttribute != null ? columnAttribute.Filterable : false;
                columnInfo.FilterMode             = columnAttribute != null ? columnAttribute.FilterMode : FilterMode.And;
                columnInfo.ReferField             = columnAttribute?.ReferField;
                columnInfo.ReferCondition         = columnAttribute?.ReferCondition;
                columnInfo.ReferValueFormatMethod = columnAttribute?.ReferValueFormatMethod;
                columnInfo.Weight         = columnAttribute != null ? columnAttribute.Weight : 0;
                columnInfo.Width          = columnAttribute != null ? columnAttribute.Width : 0;
                columnInfo.FormatMethod   = columnAttribute?.FormatMethod;
                columnInfo.OperationEvent = columnAttribute?.OperationEvent;
            }

            if (!_clrTypeMap.ContainsKey(clrType))
            {
                _clrTypeMap[clrType] = viewModel;
            }

            return(viewModel);
        }