protected override void SendToInner() { bool peerOuterGroupProcessing = base.m_odpContext.PeerOuterGroupProcessing; base.m_dataRegionDef.RuntimeDataRegionObj = base.m_selfReference; int num = (this.m_outerGroupings != null) ? this.m_outerGroupings.Length : 0; AggregateRowInfo aggregateRowInfo = AggregateRowInfo.CreateAndSaveAggregateInfo(base.m_odpContext); if (base.m_dataRegionDef.IsMatrixIDC) { if (this.m_innerGroupings != null) { this.ProcessInnerHierarchy(aggregateRowInfo); } for (int i = 0; i < num; i++) { this.ProcessOuterHierarchy(aggregateRowInfo, i); } } else { if (num == 0) { if (this.m_innerGroupings != null) { this.ProcessInnerHierarchy(aggregateRowInfo); } } else { if (this.m_innerGroupsWithCellsForOuterPeerGroupProcessing == null || !peerOuterGroupProcessing) { this.m_innerGroupsWithCellsForOuterPeerGroupProcessing = new List <IReference <RuntimeDataTablixGroupLeafObj> >(); } for (int j = 0; j < num; j++) { this.ProcessOuterHierarchy(aggregateRowInfo, j); if (this.m_innerGroupings != null) { if (j == 0) { this.ProcessInnerHierarchy(aggregateRowInfo); } else { foreach (IReference <RuntimeDataTablixGroupLeafObj> item in this.m_innerGroupsWithCellsForOuterPeerGroupProcessing) { using (item.PinValue()) { item.Value().PeerOuterGroupProcessCells(); } aggregateRowInfo.RestoreAggregateInfo(base.m_odpContext); } } } } } base.m_odpContext.PeerOuterGroupProcessing = peerOuterGroupProcessing; } }
public void FirstPassNextDataRow(OnDemandProcessingContext odpContext) { AggregateRowInfo aggregateRowInfo = AggregateRowInfo.CreateAndSaveAggregateInfo(odpContext); for (int i = 0; i < this.m_dataRegionObjs.Count; i++) { RuntimeDataRegionObjReference runtimeDataRegionObjReference = this.m_dataRegionObjs[i]; if ((BaseReference)runtimeDataRegionObjReference != (object)null) { using (runtimeDataRegionObjReference.PinValue()) { runtimeDataRegionObjReference.Value().NextRow(); } aggregateRowInfo.RestoreAggregateInfo(odpContext); } } }