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;
     }
 }
示例#4
0
        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();
        }
示例#6
0
 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);
        }
示例#8
0
        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();
        }