/// <summary> /// Returns Expression func for corresponding Dataoperation and Property Name. /// </summary> /// <param name="propertyName">propertyName</param> /// <param name="operation">Data operation</param> /// <param name="reflectionMode">Reflection Mode</param> /// <returns>ExpressionFunc</returns> public override System.Linq.Expressions.Expression <Func <string, object, object> > GetExpressionFunc(string propertyName, DataOperation operation = DataOperation.Default, DataReflectionMode reflectionMode = DataReflectionMode.Default) { var column = this.dataGrid.Columns.FirstOrDefault(col => col.MappingName == propertyName); if (column == null) { return(null); } DataReflectionMode mode = operation == DataOperation.Grouping ? column.GroupMode : reflectionMode; if (this.propertyAccessProvider != null) { this.propertyAccessProvider.OnBeginReflect(); } return(this.GetValueExpressionFunc(column, operation, mode, column.useBindingValue)); }
/// <summary> /// Return ValueFunc for based on corresponding column and DataOperationMode /// </summary> /// <param name="view">CollectionViewAdv</param> /// <param name="column">GridColumn</param> /// <param name="operation">DataOperation</param> /// <param name="mode">DataReflectionMode</param> /// <param name="useBindingValue">useBindingValue</param> /// <returns>Func<string, object, object></returns> public static Func <string, object, object> GetValueFunc(this CollectionViewAdv view, GridColumn column, DataOperation operation, DataReflectionMode mode, bool useBindingValue) { if (operation == DataOperation.Grouping) { var pgd = view.GroupDescriptions.OfType <ColumnGroupDescription>().FirstOrDefault(g => g.PropertyName == column.mappingName); if (pgd != null && pgd.Converter != null) { Func <string, object, object> groupConverterFunc = (columnName, record) => { //The ColumnName and the PropertyReflector helps to get the value to Group the Column with the Intervals. if (pgd.Converter is IColumnAccessProvider) { (pgd.Converter as IColumnAccessProvider).ColumnName = columnName; (pgd.Converter as IColumnAccessProvider).PropertyReflector = view.GetPropertyAccessProvider(); } return(pgd.Converter.Convert(record, record.GetType(), column, CultureInfo.CurrentCulture.GetCulture())); }; return(groupConverterFunc); } } if (column != null && column.IsUnbound) { var unboundcolumn = column as GridUnBoundColumn; var dataGrid = view.GetDataGrid() as SfDataGrid; return(view.GetUnboundFunc(dataGrid, unboundcolumn)); } else if (mode == DataReflectionMode.Default) { if (column != null && column.ValueBinding != null && column.UseBindingValue) { return(view.GetBindingFunc()); } #if WPF if (view.IsITypedListSource()) { var func = view.GetITypedListFunc(column.MappingName); if (func != null) { return(func); } } #endif if (view.IsDynamicBound) { return(view.GetDynamicFunc()); } if (view.IsXElementBound) { return(view.GetXElementFunc()); } } else if (mode == DataReflectionMode.Display) { return((propname, record) => view.GetPropertyAccessProvider().GetDisplayValue(record, propname, useBindingValue)); } else if (mode == DataReflectionMode.Value) { return((propName, record) => view.GetPropertyAccessProvider().GetValue(record, propName, useBindingValue)); } return(null); }
public override Expression <Func <string, object, object> > GetExpressionFunc(string propertyName, DataOperation operation = DataOperation.Default, DataReflectionMode reflectionMode = DataReflectionMode.Default) { Expression <Func <string, object, object> > exp = base.GetExpressionFunc(propertyName, operation, reflectionMode); if (exp == null) { Func <string, object, object> func; func = (propertyname, record) => { var provider = this.GetPropertyAccessProvider(); return(provider.GetValue(record, propertyName)); }; exp = (propertyname, record) => func(propertyName, record); } return(exp); }
/// <summary> /// Returns ValueExpressionFunc for corresponding column and data operation /// </summary> /// <param name="view">CollectionViewAdv</param> /// <param name="column">Column</param> /// <param name="operation">DataOperation</param> /// <param name="mode">DataReflectionMode</param> /// <param name="useBindingValue">useBindingvalue</param> /// <returns>Expression<Func<string, object, object>></returns> public static System.Linq.Expressions.Expression <Func <string, object, object> > GetValueExpressionFunc(this CollectionViewAdv view, GridColumn column, DataOperation operation, DataReflectionMode mode, bool useBindingValue) { if (column != null && column.IsUnbound) { var unboundcolumn = column as GridUnBoundColumn; var dataGrid = view.GetDataGrid() as SfDataGrid; view.GetUnboundFunc(dataGrid, unboundcolumn); if (unboundcolumn.UnBoundFunc != null) { return((columnName, record) => unboundcolumn.UnBoundFunc(columnName, record)); } return(null); } else if (mode == DataReflectionMode.Default) { if (column != null && column.ValueBinding != null && column.UseBindingValue) { return(view.GetBindingExpressionFunc()); } #if WPF if (view.IsITypedListSource()) { var func = view.GetITypedListExpressionFunc(column.MappingName); if (func != null) { return(func); } } #endif if (view.IsDynamicBound) { return(view.GetDynamicExpressionFunc()); } else if (view.IsXElementBound) { return(view.GetXElementAttributeFunc()); } } else if (mode == DataReflectionMode.Display) { return((propname, record) => view.GetPropertyAccessProvider().GetDisplayValue(record, propname, useBindingValue)); } else if (mode == DataReflectionMode.Value) { return((propName, record) => view.GetPropertyAccessProvider().GetValue(record, propName, useBindingValue)); } return(null); }