protected static RuntimeDataTablixGroupRootObjReference GetGroupRoot(AspNetCore.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode rifMember, IReference <RuntimeMemberObj>[] memberCol) { Global.Tracer.Assert(!rifMember.IsStatic, "Cannot GetGroupRoot of a static member"); IReference <RuntimeMemberObj> reference = memberCol[rifMember.IndexInCollection]; RuntimeMemberObj runtimeMemberObj = reference.Value(); return(runtimeMemberObj.GroupRoot); }
public override void CalculateRunningValues(Dictionary <string, IReference <RuntimeGroupRootObj> > groupCol, IReference <RuntimeGroupRootObj> lastGroup, AggregateUpdateContext aggContext) { if (base.m_dataRegionDef.RunningValues != null && base.m_runningValues == null && base.m_previousValues == null) { RuntimeDataTablixObj.AddRunningValues(base.m_odpContext, base.m_dataRegionDef.RunningValues, ref base.m_runningValues, ref base.m_previousValues, groupCol, lastGroup); } if (base.m_dataRegionDef.DataScopeInfo != null) { List <string> list = null; List <string> list2 = null; RuntimeDataTablixObj.AddRunningValues(base.m_odpContext, base.m_dataRegionDef.DataScopeInfo.RunningValuesOfAggregates, ref list, ref list2, groupCol, lastGroup); } bool flag = base.m_dataRows != null && FlagUtils.HasFlag(base.m_dataAction, DataActions.PostSortAggregates); AggregateUpdateQueue workQueue = RuntimeDataRegionObj.AggregateOfAggregatesStart(aggContext, this, base.m_dataRegionDef.DataScopeInfo, base.m_postSortAggregatesOfAggregates, (AggregateUpdateFlags)(flag ? 1 : 3), true); if (flag) { DataActions dataActions = DataActions.PostSortAggregates; if (aggContext.LastScopeNeedsRowAggregateProcessing()) { dataActions |= DataActions.PostSortAggregatesOfAggregates; } base.ReadRows(dataActions, aggContext); base.m_dataRows = null; } int num = (this.m_outerGroupings != null) ? this.m_outerGroupings.Length : 0; if (num == 0) { if (this.m_innerGroupings != null) { for (int i = 0; i < this.m_innerGroupings.Length; i++) { IReference <RuntimeMemberObj> reference = this.m_innerGroupings[i]; using (reference.PinValue()) { reference.Value().CalculateRunningValues(groupCol, lastGroup, aggContext); } } } } else { for (int j = 0; j < num; j++) { IReference <RuntimeMemberObj> reference2 = this.m_outerGroupings[j]; bool flag2 = default(bool); using (reference2.PinValue()) { RuntimeMemberObj runtimeMemberObj = reference2.Value(); runtimeMemberObj.CalculateRunningValues(groupCol, lastGroup, aggContext); flag2 = ((BaseReference)runtimeMemberObj.GroupRoot == (object)null); } if (flag2 && this.m_innerGroupings != null) { for (int k = 0; k < this.m_innerGroupings.Length; k++) { IReference <RuntimeMemberObj> reference3 = this.m_innerGroupings[k]; using (reference3.PinValue()) { RuntimeMemberObj runtimeMemberObj2 = reference3.Value(); runtimeMemberObj2.PrepareCalculateRunningValues(); runtimeMemberObj2.CalculateRunningValues(groupCol, lastGroup, aggContext); } } } } } this.CalculateRunningValuesForTopLevelStaticContents(groupCol, lastGroup, aggContext); RuntimeDataRegionObj.AggregatesOfAggregatesEnd(this, aggContext, workQueue, base.m_dataRegionDef.DataScopeInfo, base.m_postSortAggregatesOfAggregates, true); this.CalculateDRPreviousAggregates(); RuntimeRICollection.StoreRunningValues(base.m_odpContext.ReportObjectModel.AggregatesImpl, base.m_dataRegionDef.RunningValues, ref base.m_runningValueValues); if (base.m_dataRegionDef.DataScopeInfo != null) { RuntimeRICollection.StoreRunningValues(base.m_odpContext.ReportObjectModel.AggregatesImpl, base.m_dataRegionDef.DataScopeInfo.RunningValuesOfAggregates, ref base.m_runningValueOfAggregateValues); } }