public void UpdateAggregatesForRow() { Global.Tracer.Assert(this.m_aggsForUpdateAtRowScope != null || this.m_runningValuesForUpdateAtRow != null, "UpdateAggregatesForRow must be driven by a call to UpdateAggregates."); if (this.m_aggsForUpdateAtRowScope != null) { foreach (AspNetCore.ReportingServices.ReportIntermediateFormat.DataAggregateObj item in this.m_aggsForUpdateAtRowScope) { item.Update(); } } if (this.m_runningValuesForUpdateAtRow != null) { RuntimeDataTablixObj.UpdateRunningValues(this.m_odpContext, this.m_runningValuesForUpdateAtRow); } }
public override void ReadRow(DataActions dataAction, ITraversalContext context) { if (DataActions.UserSort == dataAction) { RuntimeDataRegionObj.CommonFirstRow(base.m_odpContext, ref base.m_firstRowIsAggregate, ref base.m_firstRow); base.CommonNextRow(base.m_dataRows); } else if (DataActions.AggregatesOfAggregates == dataAction) { AggregateUpdateContext aggregateUpdateContext = (AggregateUpdateContext)context; aggregateUpdateContext.UpdateAggregatesForRow(); } else { if (FlagUtils.HasFlag(dataAction, DataActions.PostSortAggregatesOfAggregates)) { AggregateUpdateContext aggregateUpdateContext2 = (AggregateUpdateContext)context; aggregateUpdateContext2.UpdateAggregatesForRow(); } if (!base.m_dataRegionDef.ProcessCellRunningValues) { if (FlagUtils.HasFlag(dataAction, DataActions.PostSortAggregates)) { if (base.m_postSortAggregates != null) { RuntimeDataRegionObj.UpdateAggregates(base.m_odpContext, base.m_postSortAggregates, false); } if (base.m_runningValues != null) { RuntimeDataTablixObj.UpdateRunningValues(base.m_odpContext, base.m_runningValues); } } if (base.m_outerScope != null && (dataAction & base.m_outerDataAction) != 0) { using (base.m_outerScope.PinValue()) { IScope scope = base.m_outerScope.Value(); scope.ReadRow(dataAction, context); } } } } }
public bool UpdateAggregates(DataScopeInfo scopeInfo, IDataRowHolder scopeInst, AggregateUpdateFlags updateFlags, bool needsSetupEnvironment) { this.m_aggsForUpdateAtRowScope = null; this.m_runningValuesForUpdateAtRow = null; if (this.m_activeAggregates == null) { return(false); } for (AggregateUpdateCollection aggregateUpdateCollection = this.m_activeAggregates; aggregateUpdateCollection != null; aggregateUpdateCollection = aggregateUpdateCollection.LinkedCollection) { List <AspNetCore.ReportingServices.ReportIntermediateFormat.DataAggregateObj> list = default(List <AspNetCore.ReportingServices.ReportIntermediateFormat.DataAggregateObj>); if (aggregateUpdateCollection.GetAggregatesForScope(scopeInfo.ScopeID, out list)) { if (needsSetupEnvironment) { scopeInst.SetupEnvironment(); needsSetupEnvironment = false; } foreach (AspNetCore.ReportingServices.ReportIntermediateFormat.DataAggregateObj item in list) { item.Update(); } } if (aggregateUpdateCollection.GetAggregatesForRowScope(scopeInfo.ScopeID, out list)) { if (this.m_aggsForUpdateAtRowScope == null) { this.m_aggsForUpdateAtRowScope = new List <AspNetCore.ReportingServices.ReportIntermediateFormat.DataAggregateObj>(); } this.m_aggsForUpdateAtRowScope.AddRange(list); } List <string> list2 = default(List <string>); if (aggregateUpdateCollection.GetRunningValuesForScope(scopeInfo.ScopeID, out list2)) { if (needsSetupEnvironment) { scopeInst.SetupEnvironment(); needsSetupEnvironment = false; } RuntimeDataTablixObj.UpdateRunningValues(this.m_odpContext, list2); } if (aggregateUpdateCollection.GetRunningValuesForRowScope(scopeInfo.ScopeID, out list2)) { if (this.m_runningValuesForUpdateAtRow == null) { this.m_runningValuesForUpdateAtRow = new List <string>(); } this.m_runningValuesForUpdateAtRow.AddRange(list2); } } if (this.m_aggsForUpdateAtRowScope != null || this.m_runningValuesForUpdateAtRow != null) { if (needsSetupEnvironment) { scopeInst.SetupEnvironment(); } if (FlagUtils.HasFlag(updateFlags, AggregateUpdateFlags.RowAggregates)) { scopeInst.ReadRows(DataActions.AggregatesOfAggregates, this); } } return(scopeInfo.ScopeID != this.m_activeAggregates.InnermostUpdateScopeID); }