/// <summary>
        /// Invalidates aggregate results by assigning <see cref="Constants.AggregateCalculatingPlaceHolder"/> value.
        /// </summary>
        /// <param name="grid">The grid control.</param>
        /// <param name="aggregateDefinitions">The aggregate definition collection.</param>
        public static void InvalidateAggregateResults(GridViewDataControl grid, IList<AggregateDefinition> aggregateDefinitions = null)
        {
            if (grid == null)
                return;

            if (aggregateDefinitions == null)
            {
                foreach (var column in grid.Columns)
                {
                    foreach (var aggregateFunction in column.AggregateFunctions)
                    {
                        ((AggregateFunction<object, object>)aggregateFunction)
                            .AggregationExpression = objects => Constants.AggregateCalculatingPlaceHolder;
                    }
                }
            }
            else
            {
                var functionsToRecalculate = aggregateDefinitions.Select(x => x.FunctionName);
                var availableFunctions = grid.Columns.SelectMany<GridViewColumn, AggregateFunction>(x => x.AggregateFunctions).ToList();

                foreach (var functionName in functionsToRecalculate)
                {
                    var aggregateFunction = availableFunctions.FirstOrDefault(x => x.FunctionName == functionName);
                    if (aggregateFunction != null)
                    {
                        ((AggregateFunction<object, object>) aggregateFunction)
                            .AggregationExpression = objects => Constants.AggregateCalculatingPlaceHolder;
                    }
                }
            }

            grid.CalculateAggregates();
        }
        /// <summary>
        /// Updates aggregate results.
        /// </summary>
        /// <param name="grid">The grid control.</param>
        /// <param name="aggregateResults">The aggregate result collection.</param>
        /// <param name="aggregateDefinitions">The aggregate definition collection.</param>
        public static void UpdateAggregates(
            GridViewDataControl grid,
            AggregateResultCollection aggregateResults,
            IList<AggregateDefinition> aggregateDefinitions)
        {
            if (grid == null)
                return;

            ProcessAggregateResults(
                grid, aggregateResults, aggregateDefinitions);

            grid.CalculateAggregates();
        }
Beispiel #3
0
        public static void CalculateAggregats(bool isClient, GridViewDataControl grid, AggregateCriteria criteria, IColumnItem currentColumn, string result)
        {
            var f = new AggregateFunction<object, object>
                        {
                            Caption = string.Format(CultureInfo.InvariantCulture, "{0}:", AggregateHelper.GetAttribute(criteria.SummaryType).FullName),
                            FunctionName = string.Format(CultureInfo.InvariantCulture, "{0}{1}", criteria.SelectedColumn, criteria.SummaryType)
                        };

            if (isClient)
                f.AggregationExpression = x => x.ClientCalculateAggregates(criteria);
            else
                f.AggregationExpression = x => result;

            if (currentColumn != null)
            {
                if (grid != null)
                {
                    grid.Columns[currentColumn.FullyQualifiedName].AggregateFunctions.Add(f);
                    var ordered = grid.Columns[currentColumn.FullyQualifiedName].AggregateFunctions.OrderBy(x => AggregateHelper.GetAttribute(AggregateHelper.GetTypeByFullName(x.Caption.Replace(":", null))).Order).ToList();
                    grid.Columns[currentColumn.FullyQualifiedName].AggregateFunctions.Clear();
                    grid.Columns[currentColumn.FullyQualifiedName].AggregateFunctions.AddRange(ordered);
                }

                currentColumn.AggregateCriteriaList.Add(criteria);
            }

            if (!isClient)
                if (grid != null)
                    grid.CalculateAggregates();
        }