public override void CopyDomainScopeGroupInstances(RuntimeGroupRootObj destination) { OnDemandProcessingContext odpContext = base.m_owner.OdpContext; DomainScopeContext domainScopeContext = odpContext.DomainScopeContext; domainScopeContext.CurrentDomainScope = new DomainScopeContext.DomainScopeInfo(); domainScopeContext.CurrentDomainScope.InitializeKeys((base.m_owner as RuntimeGroupRootObj).GroupExpressions.Count); this.CopyDomainScopeGroupInstance(destination, this.m_hashtable); domainScopeContext.CurrentDomainScope = null; }
public override bool SortAndFilter(AggregateUpdateContext aggContext) { this.SetupEnvironment(); if (base.m_userSortTargetInfo != null) { base.m_userSortTargetInfo.EnterProcessUserSortPhase(base.m_odpContext); } bool flag = base.DataRegionDef.ProcessingInnerGrouping == AspNetCore.ReportingServices.ReportIntermediateFormat.DataRegion.ProcessingInnerGroupings.Column; IReference <RuntimeMemberObj>[] array = flag ? this.m_outerGroupings : this.m_innerGroupings; IReference <RuntimeMemberObj>[] array2 = flag ? this.m_innerGroupings : this.m_outerGroupings; int rowDomainScopeCount = base.DataRegionDef.RowDomainScopeCount; int columnDomainScopeCount = base.DataRegionDef.ColumnDomainScopeCount; DomainScopeContext domainScopeContext = base.OdpContext.DomainScopeContext; AggregateUpdateQueue workQueue = null; if (base.m_odpContext.HasSecondPassOperation(SecondPassOperations.FilteringOrAggregatesOrDomainScope)) { workQueue = RuntimeDataRegionObj.AggregateOfAggregatesStart(aggContext, this, base.m_dataRegionDef.DataScopeInfo, base.m_aggregatesOfAggregates, AggregateUpdateFlags.Both, false); if (rowDomainScopeCount > 0) { domainScopeContext.AddDomainScopes(array, array.Length - rowDomainScopeCount); } if (columnDomainScopeCount > 0) { domainScopeContext.AddDomainScopes(array2, array2.Length - columnDomainScopeCount); } } this.Traverse(ProcessingStages.SortAndFilter, aggContext); base.SortAndFilter(aggContext); if (base.m_odpContext.HasSecondPassOperation(SecondPassOperations.FilteringOrAggregatesOrDomainScope)) { RuntimeDataRegionObj.AggregatesOfAggregatesEnd(this, aggContext, workQueue, base.m_dataRegionDef.DataScopeInfo, base.m_aggregatesOfAggregates, true); if (rowDomainScopeCount > 0) { domainScopeContext.RemoveDomainScopes(array, array.Length - rowDomainScopeCount); } if (columnDomainScopeCount > 0) { domainScopeContext.RemoveDomainScopes(array2, array2.Length - columnDomainScopeCount); } } if (base.m_userSortTargetInfo != null) { base.m_userSortTargetInfo.LeaveProcessUserSortPhase(base.m_odpContext); } return(true); }
public override void NextRow() { bool flag = true; RuntimeGroupRootObj runtimeGroupRootObj = null; using (this.m_hierarchyRoot.PinValue()) { if (this.m_hierarchyRoot is RuntimeGroupRootObjReference) { runtimeGroupRootObj = (RuntimeGroupRootObj)this.m_hierarchyRoot.Value(); if (ProcessingStages.SortAndFilter == runtimeGroupRootObj.ProcessingStage) { flag = false; } } if (this.m_hierarchyObjs != null) { if (flag) { IReference <RuntimeHierarchyObj> reference = this.m_hierarchyObjs[0]; Global.Tracer.Assert(null != reference, "(null != hierarchyObj)"); using (reference.PinValue()) { reference.Value().NextRow(); } } else if (runtimeGroupRootObj != null) { RuntimeGroupLeafObjReference lastChild = runtimeGroupRootObj.LastChild; Global.Tracer.Assert((BaseReference)null != (object)lastChild, "(null != groupLastChild)"); this.m_hierarchyObjs.Add(lastChild); } } else if (this.m_grouping != null) { AspNetCore.ReportingServices.ReportProcessing.ObjectType objectType = runtimeGroupRootObj.HierarchyDef.DataRegionDef.ObjectType; string name = runtimeGroupRootObj.HierarchyDef.DataRegionDef.Name; string propertyName = "GroupExpression"; DomainScopeContext domainScopeContext = base.OdpContext.DomainScopeContext; DomainScopeContext.DomainScopeInfo domainScopeInfo = null; if (domainScopeContext != null) { domainScopeInfo = domainScopeContext.CurrentDomainScope; } object obj; if (domainScopeInfo != null) { domainScopeInfo.MoveNext(); obj = domainScopeInfo.CurrentKey; } else { obj = ((this.m_expression != null) ? base.m_odpContext.ReportRuntime.EvaluateRuntimeExpression(this.m_expression, objectType, name, propertyName) : ((object)base.m_odpContext.ReportObjectModel.FieldsImpl.GetRowIndex())); } if (runtimeGroupRootObj != null && flag) { AspNetCore.ReportingServices.ReportIntermediateFormat.Grouping grouping = runtimeGroupRootObj.HierarchyDef.Grouping; if (runtimeGroupRootObj.SaveGroupExprValues) { grouping.CurrentGroupExpressionValues.Add(obj); } this.MatchSortFilterScope(runtimeGroupRootObj.SelfReference, grouping, obj, this.m_expression.ExpressionIndex); } this.m_grouping.NextRow(obj); if (domainScopeInfo != null) { domainScopeInfo.MovePrevious(); } } } }