コード例 #1
0
ファイル: Group.cs プロジェクト: zatuliveter/reportviewercore
 internal Group(CustomReportItem owner, Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode memberDef, DataRegionMember dataMember)
 {
     m_isOldSnapshot = false;
     m_criOwner      = owner;
     m_memberDef     = memberDef;
     m_dataMember    = dataMember;
 }
コード例 #2
0
        internal RuntimeDataTablixGroupRootObj(IReference <IScope> outerScope, Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode dynamicMember, ref DataActions dataAction, OnDemandProcessingContext odpContext, IReference <RuntimeMemberObj>[] innerGroupings, bool outermostStatics, int headingLevel, Microsoft.ReportingServices.ReportProcessing.ObjectType objectType)
            : base(outerScope, dynamicMember, dataAction, odpContext, objectType)
        {
            m_innerGroupings   = innerGroupings;
            m_headingLevel     = headingLevel;
            m_outermostStatics = outermostStatics;
            m_hasLeafCells     = false;
            HierarchyNodeList innerStaticMembersInSameScope = dynamicMember.InnerStaticMembersInSameScope;

            m_hasLeafCells = (!dynamicMember.HasInnerDynamic || (innerStaticMembersInSameScope != null && innerStaticMembersInSameScope.LeafCellIndexes != null));
            if (((innerGroupings == null && innerStaticMembersInSameScope != null && innerStaticMembersInSameScope.LeafCellIndexes != null) || (innerGroupings != null && outermostStatics)) && m_hasLeafCells)
            {
                m_processStaticCellsForRVs = true;
            }
            if (m_hasLeafCells && outermostStatics)
            {
                m_processOutermostStaticCells = true;
            }
            NeedProcessDataActions(dynamicMember);
            NeedProcessDataActions(dynamicMember.InnerStaticMembersInSameScope);
            if (dynamicMember.Grouping.Filters == null)
            {
                dataAction = DataActions.None;
            }
            if ((m_processOutermostStaticCells || m_processStaticCellsForRVs) && (dynamicMember.DataRegionDef.CellPostSortAggregates != null || dynamicMember.DataRegionDef.CellRunningValues != null))
            {
                m_dataAction |= DataActions.PostSortAggregates;
            }
        }
コード例 #3
0
 private void NeedProcessDataActions(Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode memberDefinition)
 {
     if (memberDefinition != null)
     {
         NeedProcessDataActions(memberDefinition.RunningValues);
     }
 }
コード例 #4
0
 internal ScopeIDContext(ScopeID scopeID, Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode memberDef, InternalStreamingOdpDynamicMemberLogic memberLogic, RestartMode restartMode)
     : base(restartMode)
 {
     m_scopeID     = scopeID;
     m_memberDef   = memberDef;
     m_memberLogic = memberLogic;
 }
コード例 #5
0
 private bool IsParentScopeIDAlreadySet(Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode target)
 {
     if (m_queryRestartPosition.Count == 0)
     {
         return(!ParentScopeIsDynamic(target));
     }
     return(IsParentScopeAdded(target));
 }
コード例 #6
0
 private void AddGroupScope(Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode member, ref FunctionalList <ScopeTreeNode> axisScopes)
 {
     if (!m_scopes.TryGetValue(member, out ScopeTreeNode value))
     {
         value = (HasScope(axisScopes) ? new SubScopeNode(member, m_activeScopes.First) : new SubScopeNode(member, m_dataRegionScopes.First));
     }
     AddScope(value);
     axisScopes = axisScopes.Add(value);
 }
コード例 #7
0
 internal bool TryAddScopeID(ScopeID scopeID, Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode memberDef, InternalStreamingOdpDynamicMemberLogic memberLogic)
 {
     if (IsParentScopeIDAlreadySet(memberDef))
     {
         RestartMode restartMode = (!CanMarkRestartable(memberDef)) ? RestartMode.Rom : RestartMode.Query;
         m_queryRestartPosition.Add(new ScopeIDContext(scopeID, memberDef, memberLogic, restartMode));
         return(true);
     }
     return(false);
 }
コード例 #8
0
 internal void UnRegisterGrouping(Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode member)
 {
     if (member.IsColumn)
     {
         RemoveGroupScope(ref m_activeColumnScopes);
     }
     else
     {
         RemoveGroupScope(ref m_activeRowScopes);
     }
 }
コード例 #9
0
 private bool CanMarkRestartable(Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode memberDef)
 {
     if (memberDef.DataScopeInfo.IsDecomposable && memberDef.Sorting != null && memberDef.Sorting.NaturalSort)
     {
         if (LastScopeIDContext != null)
         {
             return(LastScopeIDContext.IsRowLevelRestart);
         }
         return(true);
     }
     return(false);
 }
コード例 #10
0
        protected override void InitializeGroupScopedItems(Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode member, ref DataActions innerDataAction)
        {
            List <Microsoft.ReportingServices.ReportIntermediateFormat.ReportItem> groupScopedContents = GetGroupScopedContents(member);

            if (groupScopedContents != null)
            {
                if (m_groupScopedItems == null)
                {
                    m_groupScopedItems = new RuntimeRICollection(groupScopedContents.Count);
                }
                m_groupScopedItems.AddItems(m_selfReference, groupScopedContents, ref innerDataAction, m_odpContext);
            }
        }
コード例 #11
0
        protected static IOnDemandMemberInstanceReference GetFirstMemberInstance(Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode rifMember, IReference <RuntimeMemberObj>[] memberCol)
        {
            IOnDemandMemberInstanceReference       result    = null;
            RuntimeDataTablixGroupRootObjReference groupRoot = GetGroupRoot(rifMember, memberCol);

            using (groupRoot.PinValue())
            {
                RuntimeGroupLeafObjReference firstChild = groupRoot.Value().FirstChild;
                if (firstChild != null)
                {
                    return((IOnDemandMemberInstanceReference)firstChild);
                }
                return(result);
            }
        }
コード例 #12
0
 private IReference <RuntimeMemberObj>[] GetMemberCollection(Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode rifMember)
 {
     if (m_dataRegionDef.ProcessingInnerGrouping == Microsoft.ReportingServices.ReportIntermediateFormat.DataRegion.ProcessingInnerGroupings.Column)
     {
         if (rifMember.IsColumn)
         {
             return(m_innerGroupings);
         }
         return(m_outerGroupings);
     }
     if (rifMember.IsColumn)
     {
         return(m_outerGroupings);
     }
     return(m_innerGroupings);
 }
コード例 #13
0
        private RuntimeDataTablixMemberObj(IReference <IScope> owner, Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode dynamicMember, ref DataActions dataAction, OnDemandProcessingContext odpContext, IReference <RuntimeMemberObj>[] innerGroupings, HierarchyNodeList staticMembers, bool outerMostStatics, int headingLevel, Microsoft.ReportingServices.ReportProcessing.ObjectType objectType)
            : base(owner, dynamicMember)
        {
            int excludedCellIndex = -1;

            if (dynamicMember != null)
            {
                excludedCellIndex = dynamicMember.MemberCellIndex;
                RuntimeDataTablixGroupRootObj runtimeDataTablixGroupRootObj = new RuntimeDataTablixGroupRootObj(owner, dynamicMember, ref dataAction, odpContext, innerGroupings, outerMostStatics, headingLevel, objectType);
                m_groupRoot = (RuntimeDataTablixGroupRootObjReference)runtimeDataTablixGroupRootObj.SelfReference;
                m_groupRoot.UnPinValue();
            }
            if (staticMembers != null && staticMembers.Count != 0)
            {
                _ = staticMembers.Count;
                m_hasStaticMembers      = true;
                m_staticLeafCellIndexes = staticMembers.GetLeafCellIndexes(excludedCellIndex);
            }
        }
コード例 #14
0
 private bool IsParentScopeAdded(Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode target)
 {
     if (target.DataScopeInfo.DataSet != LastScopeIDContext.MemberDefinition.DataScopeInfo.DataSet && !target.IsChildScopeOf(LastScopeIDContext.MemberDefinition) && !LastScopeIDContext.MemberDefinition.IsChildScopeOf(target))
     {
         return(true);
     }
     if (target.IsChildScopeOf(LastScopeIDContext.MemberDefinition))
     {
         return(true);
     }
     if (!target.DataScopeInfo.IsDecomposable)
     {
         for (int num = m_queryRestartPosition.Count - 2; num >= 0; num--)
         {
             if (target.IsChildScopeOf(m_queryRestartPosition[num].MemberDefinition))
             {
                 return(true);
             }
         }
         return(false);
     }
     return(false);
 }
コード例 #15
0
        private void BindScopeToInstance(IRIFReportDataScope reportDataScope)
        {
            if (reportDataScope.IsBoundToStreamingScopeInstance)
            {
                return;
            }
            if (!reportDataScope.IsScope)
            {
                IRIFReportDataScope parentReportScope = reportDataScope.ParentReportScope;
                EnsureScopeIsBound(parentReportScope);
                reportDataScope.BindToStreamingScopeInstance(parentReportScope.CurrentStreamingScopeInstance);
                return;
            }
            switch (reportDataScope.InstancePathItem.Type)
            {
            case InstancePathItemType.Cell:
                if (reportDataScope.IsDataIntersectionScope)
                {
                    IRIFReportIntersectionScope iRIFReportIntersectionScope = (IRIFReportIntersectionScope)reportDataScope;
                    IRIFReportDataScope         parentRowReportScope        = iRIFReportIntersectionScope.ParentRowReportScope;
                    if (!TryBindParentScope(reportDataScope, parentRowReportScope, out IReference <IOnDemandMemberInstance> parentScopeInst2))
                    {
                        break;
                    }
                    IRIFReportDataScope parentColumnReportScope = iRIFReportIntersectionScope.ParentColumnReportScope;
                    if (!TryBindParentScope(reportDataScope, parentColumnReportScope, out IReference <IOnDemandMemberInstance> parentScopeInst3))
                    {
                        break;
                    }
                    IReference <IOnDemandMemberInstance> reference;
                    IReference <IOnDemandMemberInstance> reference2;
                    if (!iRIFReportIntersectionScope.IsColumnOuterGrouping)
                    {
                        reference  = parentScopeInst2;
                        reference2 = parentScopeInst3;
                    }
                    else
                    {
                        reference  = parentScopeInst3;
                        reference2 = parentScopeInst2;
                    }
                    CheckForPrematureScopeInstance(reportDataScope);
                    IReference <IOnDemandScopeInstance> cellRef;
                    IOnDemandScopeInstance cellInstance = SyntheticTriangulatedCellReference.GetCellInstance(reference, reference2, out cellRef);
                    if (cellInstance == null && iRIFReportIntersectionScope.DataScopeInfo.NeedsIDC && TryProcessToCreateCell(iRIFReportIntersectionScope, (RuntimeDataTablixGroupLeafObjReference)reference2, (RuntimeDataTablixGroupLeafObjReference)reference))
                    {
                        cellInstance = SyntheticTriangulatedCellReference.GetCellInstance(reference, reference2, out cellRef);
                    }
                    if (cellInstance != null)
                    {
                        if (cellRef == null)
                        {
                            iRIFReportIntersectionScope.BindToStreamingScopeInstance(reference, reference2);
                            SetupEnvironment(reportDataScope, cellInstance, iRIFReportIntersectionScope.CurrentStreamingScopeInstance);
                        }
                        else
                        {
                            reportDataScope.BindToStreamingScopeInstance(cellRef);
                        }
                    }
                }
                else
                {
                    Global.Tracer.Assert(condition: false, "Non-intersection cell scopes are not yet supported by streaming ODP.");
                }
                break;

            case InstancePathItemType.ColumnMemberInstanceIndexTopMost:
            case InstancePathItemType.ColumnMemberInstanceIndex:
            case InstancePathItemType.RowMemberInstanceIndex:
            {
                IRIFReportDataScope parentReportScope3 = reportDataScope.ParentReportScope;
                if (!TryBindParentScope(reportDataScope, parentReportScope3, out IReference <IOnDemandMemberOwnerInstance> parentScopeInst4))
                {
                    break;
                }
                CheckForPrematureScopeInstance(reportDataScope);
                using (parentScopeInst4.PinValue())
                {
                    IOnDemandMemberOwnerInstance onDemandMemberOwnerInstance = parentScopeInst4.Value();
                    Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode rifMember = (Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode)reportDataScope;
                    IOnDemandMemberInstanceReference firstMemberInstance = onDemandMemberOwnerInstance.GetFirstMemberInstance(rifMember);
                    if (RequiresIdcProcessing(reportDataScope, firstMemberInstance, (IReference <IOnDemandScopeInstance>)parentScopeInst4))
                    {
                        firstMemberInstance = onDemandMemberOwnerInstance.GetFirstMemberInstance(rifMember);
                    }
                    reportDataScope.BindToStreamingScopeInstance(firstMemberInstance);
                }
                break;
            }

            case InstancePathItemType.DataRegion:
            {
                IRIFReportDataScope parentReportScope2 = reportDataScope.ParentReportScope;
                Microsoft.ReportingServices.ReportIntermediateFormat.DataRegion dataRegion = (Microsoft.ReportingServices.ReportIntermediateFormat.DataRegion)reportDataScope;
                if (parentReportScope2 == null)
                {
                    Microsoft.ReportingServices.ReportIntermediateFormat.DataSet dataSet = dataRegion.DataScopeInfo.DataSet;
                    DataPipelineManager orCreatePipelineManager = GetOrCreatePipelineManager(dataSet, dataRegion);
                    reportDataScope.BindToStreamingScopeInstance(orCreatePipelineManager.GroupTreeRoot.GetDataRegionInstance(dataRegion));
                }
                else
                {
                    if (!TryBindParentScope(reportDataScope, parentReportScope2, out IReference <IOnDemandScopeInstance> parentScopeInst))
                    {
                        break;
                    }
                    CheckForPrematureScopeInstance(reportDataScope);
                    using (parentScopeInst.PinValue())
                    {
                        IOnDemandScopeInstance onDemandScopeInstance           = parentScopeInst.Value();
                        IReference <IOnDemandScopeInstance> dataRegionInstance = onDemandScopeInstance.GetDataRegionInstance(dataRegion);
                        if (RequiresIdcProcessing(reportDataScope, dataRegionInstance, parentScopeInst))
                        {
                            dataRegionInstance = onDemandScopeInstance.GetDataRegionInstance(dataRegion);
                        }
                        reportDataScope.BindToStreamingScopeInstance(dataRegionInstance);
                    }
                }
                break;
            }

            default:
                Global.Tracer.Assert(false, "SetupObjectModels cannot handle IRIFReportDataScope of type: {0}", Enum.GetName(typeof(InstancePathItemType), reportDataScope.InstancePathItem.Type));
                break;
            }
        }
コード例 #16
0
 protected override List <Microsoft.ReportingServices.ReportIntermediateFormat.ReportItem> GetGroupScopedContents(Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode member)
 {
     return(((TablixMember)member).GroupScopedContentsForProcessing);
 }
コード例 #17
0
 protected override RuntimeCell CreateCell(Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode outerGroupingMember, Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode innerGroupingMember)
 {
     return(new RuntimeTablixCell((RuntimeTablixGroupLeafObjReference)m_selfReference, (TablixMember)outerGroupingMember, (TablixMember)innerGroupingMember, !m_hasInnerHierarchy));
 }
コード例 #18
0
 public IReference <IDataCorrelation> GetIdcReceiver(IRIFReportDataScope scope)
 {
     if (scope.IsGroup)
     {
         Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode rifMember = scope as Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode;
         IReference <RuntimeMemberObj>[] memberCollection = GetMemberCollection(rifMember);
         return(RuntimeDataRegionObj.GetGroupRoot(rifMember, memberCollection));
     }
     Microsoft.ReportingServices.ReportIntermediateFormat.DataRegion rifDataRegion = scope as Microsoft.ReportingServices.ReportIntermediateFormat.DataRegion;
     return(GetNestedDataRegion(rifDataRegion));
 }
コード例 #19
0
 internal RuntimeMemberObj(IReference <IScope> owner, Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode dynamicMember)
 {
     m_owner = owner;
 }
コード例 #20
0
 public IOnDemandMemberInstanceReference GetFirstMemberInstance(Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode rifMember)
 {
     IReference <RuntimeMemberObj>[] memberCollection = GetMemberCollection(rifMember);
     return(RuntimeDataRegionObj.GetFirstMemberInstance(rifMember, memberCollection));
 }
コード例 #21
0
 protected RuntimeGroupRootObj(IReference <IScope> outerScope, Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode hierarchyDef, DataActions dataAction, OnDemandProcessingContext odpContext, Microsoft.ReportingServices.ReportProcessing.ObjectType objectType)
     : base(odpContext, objectType, outerScope.Value().Depth + 1)
 {
     m_hierarchyRoot = (RuntimeHierarchyObjReference)m_selfReference;
     m_outerScope    = outerScope;
     m_hierarchyDef  = hierarchyDef;
     Microsoft.ReportingServices.ReportIntermediateFormat.Grouping grouping = hierarchyDef.Grouping;
     Global.Tracer.Assert(grouping != null, "(null != groupDef)");
     m_isDetailGroup = grouping.IsDetail;
     if (m_isDetailGroup)
     {
         m_expression = null;
     }
     else
     {
         m_expression = new RuntimeExpressionInfo(grouping.GroupExpressions, grouping.ExprHost, grouping.SortDirections, 0);
     }
     if (m_odpContext.RuntimeSortFilterInfo != null)
     {
         int count = m_odpContext.RuntimeSortFilterInfo.Count;
         using (outerScope.PinValue())
         {
             IScope scope = outerScope.Value();
             for (int i = 0; i < count; i++)
             {
                 IReference <RuntimeSortFilterEventInfo> reference = m_odpContext.RuntimeSortFilterInfo[i];
                 using (reference.PinValue())
                 {
                     RuntimeSortFilterEventInfo runtimeSortFilterEventInfo = reference.Value();
                     if (runtimeSortFilterEventInfo.EventSource.ContainingScopes != null && runtimeSortFilterEventInfo.EventSource.ContainingScopes.Count != 0 && !runtimeSortFilterEventInfo.HasEventSourceScope && (!m_isDetailGroup || !runtimeSortFilterEventInfo.EventSource.IsSubReportTopLevelScope))
                     {
                         continue;
                     }
                     bool flag = false;
                     if (m_isDetailGroup)
                     {
                         if (!scope.TargetForNonDetailSort && IsTargetForSort(i, detailSort: true) && runtimeSortFilterEventInfo.EventTarget != base.SelfReference && scope.TargetScopeMatched(i, detailSort: true))
                         {
                             flag = true;
                             if (m_detailUserSortTargetInfo == null)
                             {
                                 m_detailUserSortTargetInfo = new RuntimeUserSortTargetInfo((IReference <IHierarchyObj>)base.SelfReference, i, reference);
                             }
                             else
                             {
                                 m_detailUserSortTargetInfo.AddSortInfo((IReference <IHierarchyObj>)base.SelfReference, i, reference);
                             }
                         }
                     }
                     else if (grouping.IsSortFilterExpressionScope != null)
                     {
                         flag = (grouping.IsSortFilterExpressionScope[i] && m_odpContext.UserSortFilterContext.InProcessUserSortPhase(i) && TargetScopeMatched(i, detailSort: false));
                     }
                     if (flag)
                     {
                         if (m_builtinSortOverridden == null)
                         {
                             m_builtinSortOverridden = new bool[count];
                         }
                         m_builtinSortOverridden[i] = true;
                     }
                 }
             }
         }
     }
     if (m_detailUserSortTargetInfo != null)
     {
         m_groupingType = RuntimeGroupingObj.GroupingTypes.DetailUserSort;
     }
     else if (grouping.GroupAndSort && !BuiltinSortOverridden)
     {
         m_groupingType = RuntimeGroupingObj.GroupingTypes.Sort;
     }
     else if (grouping.IsDetail && grouping.Parent == null && !BuiltinSortOverridden)
     {
         m_groupingType = RuntimeGroupingObj.GroupingTypes.Detail;
     }
     else if (grouping.NaturalGroup)
     {
         m_groupingType = RuntimeGroupingObj.GroupingTypes.NaturalGroup;
     }
     else
     {
         m_groupingType = RuntimeGroupingObj.GroupingTypes.Hash;
     }
     m_grouping = RuntimeGroupingObj.CreateGroupingObj(m_groupingType, this, objectType);
     if (grouping.Filters == null)
     {
         m_dataAction      = dataAction;
         m_outerDataAction = dataAction;
     }
     if (grouping.RecursiveAggregates != null)
     {
         m_dataAction |= DataActions.RecursiveAggregates;
     }
     if (grouping.PostSortAggregates != null)
     {
         m_dataAction |= DataActions.PostSortAggregates;
     }
     if (grouping.Parent != null)
     {
         m_parentExpression = new RuntimeExpressionInfo(grouping.Parent, grouping.ParentExprHost, null, 0);
     }
 }
コード例 #22
0
 internal RuntimeCellWithContents(RuntimeDataTablixGroupLeafObjReference owner, Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode outerGroupingMember, Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode innerGroupingMember, bool innermost)
     : base(owner, outerGroupingMember, innerGroupingMember, innermost)
 {
 }
コード例 #23
0
        private void CreateTopLevelRuntimeGroupings(ref DataActions groupingDataAction, ref IReference <RuntimeMemberObj>[] groupings, HierarchyNodeList topLevelStaticMembers, HierarchyNodeList topLevelDynamicMembers, IReference <RuntimeMemberObj>[] innerGroupings, bool hasOppositeStaticLeafMembers)
        {
            int num = topLevelDynamicMembers?.Count ?? 0;

            groupings = new IReference <RuntimeMemberObj> [Math.Max(1, num)];
            if (num == 0)
            {
                IReference <RuntimeMemberObj> reference = RuntimeDataTablixMemberObj.CreateRuntimeMemberObject(m_selfReference, null, ref groupingDataAction, m_odpContext, innerGroupings, topLevelStaticMembers, hasOppositeStaticLeafMembers, 0, base.ObjectType);
                groupings[0] = reference;
                return;
            }
            for (int i = 0; i < num; i++)
            {
                Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode dynamicMemberDef = topLevelDynamicMembers[i];
                IReference <RuntimeMemberObj> reference2 = RuntimeDataTablixMemberObj.CreateRuntimeMemberObject(m_selfReference, dynamicMemberDef, ref groupingDataAction, m_odpContext, innerGroupings, (i == 0) ? topLevelStaticMembers : null, hasOppositeStaticLeafMembers, 0, base.ObjectType);
                groupings[i] = reference2;
            }
        }
コード例 #24
0
        internal static IReference <RuntimeMemberObj> CreateRuntimeMemberObject(IReference <IScope> owner, Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode dynamicMemberDef, ref DataActions dataAction, OnDemandProcessingContext odpContext, IReference <RuntimeMemberObj>[] innerGroupings, HierarchyNodeList staticMembers, bool outerMostStatics, int headingLevel, Microsoft.ReportingServices.ReportProcessing.ObjectType dataRegionType)
        {
            RuntimeDataTablixMemberObj obj = new RuntimeDataTablixMemberObj(owner, dynamicMemberDef, ref dataAction, odpContext, innerGroupings, staticMembers, outerMostStatics, headingLevel, dataRegionType);

            return(odpContext.TablixProcessingScalabilityCache.Allocate((RuntimeMemberObj)obj, headingLevel));
        }
コード例 #25
0
        protected bool AddRunningValues(List <Microsoft.ReportingServices.ReportIntermediateFormat.RunningValueInfo> runningValues, ref List <string> runningValuesInGroup, ref List <string> previousValuesInGroup, Dictionary <string, IReference <RuntimeGroupRootObj> > groupCollection, bool cellRunningValues, bool outermostStatics)
        {
            bool result = false;

            if (runningValues == null || 0 >= runningValues.Count)
            {
                return(result);
            }
            if (runningValuesInGroup == null)
            {
                runningValuesInGroup = new List <string>();
            }
            if (previousValuesInGroup == null)
            {
                previousValuesInGroup = new List <string>();
            }
            if (cellRunningValues)
            {
                List <int> list  = null;
                List <int> list2 = null;
                Microsoft.ReportingServices.ReportIntermediateFormat.DataRegion dataRegionDef = m_hierarchyDef.DataRegionDef;
                bool isColumn = m_hierarchyDef.IsColumn;
                RuntimeDataTablixGroupRootObj runtimeDataTablixGroupRootObj = this as RuntimeDataTablixGroupRootObj;
                if (outermostStatics && ((runtimeDataTablixGroupRootObj != null && runtimeDataTablixGroupRootObj.InnerGroupings != null) || dataRegionDef.CurrentOuterGroupRoot == null))
                {
                    if (isColumn)
                    {
                        list2 = m_hierarchyDef.GetCellIndexes();
                        list  = dataRegionDef.OutermostStaticRowIndexes;
                    }
                    else
                    {
                        list2 = dataRegionDef.OutermostStaticColumnIndexes;
                        list  = m_hierarchyDef.GetCellIndexes();
                    }
                }
                else
                {
                    Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode hierarchyDef = dataRegionDef.CurrentOuterGroupRoot.Value().HierarchyDef;
                    if (isColumn)
                    {
                        list2 = m_hierarchyDef.GetCellIndexes();
                        list  = ((!outermostStatics) ? hierarchyDef.GetCellIndexes() : dataRegionDef.OutermostStaticRowIndexes);
                    }
                    else
                    {
                        list  = m_hierarchyDef.GetCellIndexes();
                        list2 = ((!outermostStatics) ? hierarchyDef.GetCellIndexes() : dataRegionDef.OutermostStaticColumnIndexes);
                    }
                }
                if (list != null && list2 != null)
                {
                    foreach (int item in list)
                    {
                        foreach (int item2 in list2)
                        {
                            Cell cell = dataRegionDef.Rows[item].Cells[item2];
                            if (cell.RunningValueIndexes != null)
                            {
                                result = true;
                                for (int i = 0; i < cell.RunningValueIndexes.Count; i++)
                                {
                                    int index = cell.RunningValueIndexes[i];
                                    AddRunningValue(runningValues[index], runningValuesInGroup, previousValuesInGroup, groupCollection);
                                }
                            }
                        }
                    }
                }
            }
            else
            {
                result = true;
                for (int j = 0; j < runningValues.Count; j++)
                {
                    AddRunningValue(runningValues[j], runningValuesInGroup, previousValuesInGroup, groupCollection);
                }
            }
            if (previousValuesInGroup.Count == 0)
            {
                previousValuesInGroup = null;
            }
            if (runningValuesInGroup.Count == 0)
            {
                runningValuesInGroup = null;
            }
            return(result);
        }
コード例 #26
0
 protected static RuntimeDataTablixGroupRootObjReference GetGroupRoot(Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode rifMember, IReference <RuntimeMemberObj>[] memberCol)
 {
     Global.Tracer.Assert(!rifMember.IsStatic, "Cannot GetGroupRoot of a static member");
     return(memberCol[rifMember.IndexInCollection].Value().GroupRoot);
 }
コード例 #27
0
 protected abstract List <Microsoft.ReportingServices.ReportIntermediateFormat.ReportItem> GetGroupScopedContents(Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode member);
コード例 #28
0
        internal override void CreateCell(RuntimeCells cellsCollection, int collectionKey, Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode outerGroupingMember, Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode innerGroupingMember, Microsoft.ReportingServices.ReportIntermediateFormat.DataRegion dataRegionDef)
        {
            RuntimeCell runtimeCell = new RuntimeChartCriCell((RuntimeChartCriGroupLeafObjReference)m_selfReference, outerGroupingMember, innerGroupingMember, !m_hasInnerHierarchy);

            if (runtimeCell.SelfReference == null)
            {
                cellsCollection.AddCell(collectionKey, runtimeCell);
                return;
            }
            IReference <RuntimeCell> selfReference = runtimeCell.SelfReference;

            selfReference.UnPinValue();
            cellsCollection.AddCell(collectionKey, selfReference);
        }
コード例 #29
0
 protected abstract RuntimeCell CreateCell(Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode outerGroupingMember, Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode innerGroupingMember);
コード例 #30
0
 internal RuntimeChartCriCell(RuntimeChartCriGroupLeafObjReference owner, Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode outerGroupingMember, Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode innerGroupingMember, bool innermost)
     : base(owner, outerGroupingMember, innerGroupingMember, innermost)
 {
 }