private void CreateInstances() { m_odpContext.ReportRuntime.CurrentScope = m_dataSetObj; if (m_hasSortFilterInfo && m_odpContext.RuntimeSortFilterInfo != null) { if (m_odpContext.TopLevelContext.ReportRuntimeUserSortFilterInfo == null) { m_odpContext.TopLevelContext.ReportRuntimeUserSortFilterInfo = new List <IReference <RuntimeSortFilterEventInfo> >(); } m_odpContext.TopLevelContext.ReportRuntimeUserSortFilterInfo.AddRange(m_odpContext.RuntimeSortFilterInfo); } m_dataSetObj.CreateInstances(); if (m_odpContext.ReportDefinition.InScopeEventSources != null) { int count = m_odpContext.ReportDefinition.InScopeEventSources.Count; List <IInScopeEventSource> list = null; for (int i = 0; i < count; i++) { IInScopeEventSource inScopeEventSource = m_odpContext.ReportDefinition.InScopeEventSources[i]; if (inScopeEventSource.UserSort.DataSet == m_dataSet) { if (list == null) { list = new List <IInScopeEventSource>(count - i); } list.Add(inScopeEventSource); } } if (list != null) { UserSortFilterContext.ProcessEventSources(m_odpContext, m_dataSetObj, list); } } m_odpContext.ReportRuntime.CurrentScope = null; }
internal UserSortFilterContext(UserSortFilterContext parentContext, Microsoft.ReportingServices.ReportIntermediateFormat.SubReport subReport) { m_runtimeSortFilterInfo = parentContext.RuntimeSortFilterInfo; m_dataSetGlobalID = parentContext.DataSetGlobalId; m_inProcessUserSortPhase = parentContext.m_inProcessUserSortPhase; subReport.UpdateSubReportScopes(parentContext); m_containingScopes = subReport.ContainingScopes; m_detailScopeSubReports = subReport.DetailScopeSubReports; }
internal void UpdateContextForFirstSubreportInstance(UserSortFilterContext parentContext) { if (-1 == m_dataSetGlobalID) { m_dataSetGlobalID = parentContext.DataSetGlobalId; m_runtimeSortFilterInfo = parentContext.RuntimeSortFilterInfo; m_inProcessUserSortPhase = parentContext.m_inProcessUserSortPhase; } }
internal void UpdateSubReportScopes(Microsoft.ReportingServices.OnDemandProcessing.TablixProcessing.UserSortFilterContext context) { if (m_containingScopes != null && 0 < m_containingScopes.Count && m_containingScopes.LastEntry == null) { if (context.DetailScopeSubReports != null) { m_detailScopeSubReports = context.CloneDetailScopeSubReports(); } else { m_detailScopeSubReports = new List <SubReport>(); } m_detailScopeSubReports.Add(this); } else { m_detailScopeSubReports = context.DetailScopeSubReports; } if (context.ContainingScopes != null) { if (m_containingScopes != null && 0 < m_containingScopes.Count) { m_containingScopes.InsertRange(0, context.ContainingScopes); } else { m_containingScopes = context.ContainingScopes; } } if (m_report == null || m_report.EventSources == null) { return; } int count = m_report.EventSources.Count; for (int i = 0; i < count; i++) { IInScopeEventSource inScopeEventSource = m_report.EventSources[i]; if (inScopeEventSource.UserSort != null) { inScopeEventSource.UserSort.DetailScopeSubReports = m_detailScopeSubReports; } if (m_containingScopes != null && 0 < m_containingScopes.Count) { if (inScopeEventSource.ContainingScopes != null && 0 < inScopeEventSource.ContainingScopes.Count) { inScopeEventSource.ContainingScopes.InsertRange(0, m_containingScopes); continue; } inScopeEventSource.IsSubReportTopLevelScope = true; inScopeEventSource.ContainingScopes = m_containingScopes; } } }
internal void CreateInstances(DataRegionInstance dataRegionInstance) { m_dataRegionDef.ResetInstanceIndexes(); m_innerGroupsWithCellsForOuterPeerGroupProcessing = null; m_dataRegionDef.CurrentDataRegionInstance = dataRegionInstance; dataRegionInstance.StoreAggregates(m_odpContext, m_dataRegionDef.Aggregates); dataRegionInstance.StoreAggregates(m_odpContext, m_dataRegionDef.PostSortAggregates); dataRegionInstance.StoreAggregates(m_odpContext, m_dataRegionDef.RunningValues); if (m_dataRegionDef.DataScopeInfo != null) { DataScopeInfo dataScopeInfo = m_dataRegionDef.DataScopeInfo; dataRegionInstance.StoreAggregates(m_odpContext, dataScopeInfo.AggregatesOfAggregates); dataRegionInstance.StoreAggregates(m_odpContext, dataScopeInfo.PostSortAggregatesOfAggregates); dataRegionInstance.StoreAggregates(m_odpContext, dataScopeInfo.RunningValuesOfAggregates); } if (m_firstRow != null) { dataRegionInstance.FirstRowOffset = m_firstRow.StreamOffset; } m_dataRegionDef.ResetInstancePathCascade(); if (m_dataRegionDef.InScopeEventSources != null) { UserSortFilterContext.ProcessEventSources(m_odpContext, this, m_dataRegionDef.InScopeEventSources); } CreateDataRegionScopedInstance(dataRegionInstance); IReference <RuntimeMemberObj>[] array; IReference <RuntimeMemberObj>[] innerMembers; bool outerGroupings; if (base.DataRegionDef.ProcessingInnerGrouping == Microsoft.ReportingServices.ReportIntermediateFormat.DataRegion.ProcessingInnerGroupings.Column) { array = m_outerGroupings; innerMembers = m_innerGroupings; outerGroupings = true; } else { array = m_innerGroupings; innerMembers = m_outerGroupings; outerGroupings = false; } IReference <RuntimeMemberObj>[] array2 = array; foreach (IReference <RuntimeMemberObj> reference in array2) { using (reference.PinValue()) { reference.Value().CreateInstances(base.SelfReference, m_odpContext, dataRegionInstance, outerGroupings, null, dataRegionInstance, innerMembers, null); } } m_dataRegionDef.ResetInstancePathCascade(); m_dataRegionDef.ResetInstanceIndexes(); }
protected override void CreateInstanceHeadingContents() { if (base.MemberDef.InScopeEventSources != null) { UserSortFilterContext.ProcessEventSources(m_odpContext, this, base.MemberDef.InScopeEventSources); } if (m_groupScopedItems != null) { List <Microsoft.ReportingServices.ReportIntermediateFormat.ReportItem> groupScopedContents = GetGroupScopedContents(base.MemberDef); if (groupScopedContents != null) { m_groupScopedItems.CreateInstances(m_memberInstance, m_odpContext, m_selfReference, groupScopedContents); } } }
public DataProcessingController(OnDemandProcessingContext odpContext, Microsoft.ReportingServices.ReportIntermediateFormat.DataSet dataSet, DataSetInstance dataSetInstance) { m_odpContext = odpContext; m_dataSet = dataSet; m_dataSetInstance = dataSetInstance; m_report = odpContext.ReportDefinition; m_odpContext.EnsureScalabilitySetup(); UserSortFilterContext userSortFilterContext = m_odpContext.UserSortFilterContext; if (!m_odpContext.InSubreportInDataRegion) { userSortFilterContext.ResetContextForTopLevelDataSet(); } m_hasSortFilterInfo = m_odpContext.PopulateRuntimeSortFilterEventInfo(m_dataSet); if (-1 == userSortFilterContext.DataSetGlobalId) { userSortFilterContext.DataSetGlobalId = m_dataSet.GlobalID; } Global.Tracer.Assert(m_odpContext.ReportObjectModel != null && m_odpContext.ReportRuntime != null); m_odpContext.SetupFieldsForNewDataSet(m_dataSet, m_dataSetInstance, addRowIndex: true, noRows: true); m_dataSet.SetFilterExprHost(m_odpContext.ReportObjectModel); m_dataSetObj = new RuntimeOnDemandDataSetObj(m_odpContext, m_dataSet, m_dataSetInstance); }
public RuntimeOnDemandDataSetObj(OnDemandProcessingContext odpContext, Microsoft.ReportingServices.ReportIntermediateFormat.DataSet dataSet, DataSetInstance dataSetInstance) { m_odpContext = odpContext; m_dataSet = dataSet; m_dataSetInstance = dataSetInstance; m_odpContext.TablixProcessingScalabilityCache.GenerateFixedReference(this); UserSortFilterContext userSortFilterContext = odpContext.UserSortFilterContext; if (m_odpContext.IsSortFilterTarget(dataSet.IsSortFilterTarget, userSortFilterContext.CurrentContainingScope, SelfReference, ref m_userSortTargetInfo) && m_userSortTargetInfo.TargetForNonDetailSort) { m_dataRows = new ScalableList <DataFieldRow>(0, odpContext.TablixProcessingScalabilityCache, 100, 10); } if (!m_odpContext.StreamingMode) { CreateRuntimeStructure(); } m_dataSet.SetupRuntimeEnvironment(m_odpContext); if (m_dataSet.Filters != null) { m_filters = new Filters(Filters.FilterTypes.DataSetFilter, (IReference <Microsoft.ReportingServices.ReportProcessing.ReportProcessing.IFilterOwner>)SelfReference, m_dataSet.Filters, m_dataSet.ObjectType, m_dataSet.Name, m_odpContext, 0); } RegisterAggregates(); }