/// <summary> /// Updates aggregate functions by name. /// </summary> /// <param name="functionName">The function name.</param> /// <param name="result">The aggregate result.</param> /// <param name="gridColumn">The grid column.</param> private static void UpdateFunctions(string functionName, AggregateResult result, GridViewColumn gridColumn) { if (gridColumn == null || string.IsNullOrWhiteSpace(functionName)) return; var aggregateFunctions = gridColumn.AggregateFunctions; var func = aggregateFunctions.Cast<AggregateFunction<object, object>>().FirstOrDefault(x => x.FunctionName == functionName); if (func == null) { func = CreateAggregateFunction(functionName, result.SummaryType, result.Value); var index = aggregateFunctions.TakeWhile(x => AggregateHelper.GetAttribute( AggregateHelper.GetTypeByFullName(x.Caption.Replace(":", null))).Order < AggregateHelper.GetAttribute(result.SummaryType).Order).Count(); if (aggregateFunctions.Count < index) aggregateFunctions.Add(func); else aggregateFunctions.Insert(index, func); } else { func.AggregationExpression = x => result.Value; } }
/// <summary> /// Updates aggregate function according to aggregation result. /// </summary> /// <param name="gridColumn">The grid column.</param> /// <param name="columnItem">The column item.</param> /// <param name="aggregateDefinition">The aggregate definition.</param> /// <param name="result">The aggregate result.</param> private static void UpdateAggregationResult(GridViewColumn gridColumn, IColumnItem columnItem, AggregateDefinition aggregateDefinition, AggregateResult result) { if (aggregateDefinition == null || result == null) return; UpdateFunctions(aggregateDefinition.FunctionName, result, gridColumn); UpdateCriteriaList(aggregateDefinition, columnItem); }