/// <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); }
/// <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); }