private void VisitTablixMemberCollection(TablixMemberCollection memberCollection, int rowMemberIndex, bool isTopLevel)
 {
     if (memberCollection == null)
     {
         return;
     }
     for (int i = 0; i < memberCollection.Count; i++)
     {
         Microsoft.ReportingServices.OnDemandReportRendering.TablixMember tablixMember = memberCollection[i];
         if (tablixMember.IsStatic)
         {
             VisitTablixMember(tablixMember, rowMemberIndex, null);
             continue;
         }
         TablixDynamicMemberInstance tablixDynamicMemberInstance = (TablixDynamicMemberInstance)tablixMember.Instance;
         Stack <int> stack = new Stack <int>();
         if (isTopLevel)
         {
             tablixDynamicMemberInstance.ResetContext();
         }
         while (tablixDynamicMemberInstance.MoveNext())
         {
             VisitTablixMember(tablixMember, rowMemberIndex, stack);
         }
         for (int j = 0; j < stack.Count; j++)
         {
             WriteDocumentMapEndContainer();
         }
     }
 }
 private void VisitTablixMemberCollection(TablixMemberCollection memberCollection, int rowMemberIndex, bool isTopLevel)
 {
     if (memberCollection != null)
     {
         for (int i = 0; i < memberCollection.Count; i++)
         {
             AspNetCore.ReportingServices.OnDemandReportRendering.TablixMember tablixMember = ((ReportElementCollectionBase <AspNetCore.ReportingServices.OnDemandReportRendering.TablixMember>)memberCollection)[i];
             if (tablixMember.IsStatic)
             {
                 this.VisitTablixMember(tablixMember, rowMemberIndex, null);
             }
             else
             {
                 TablixDynamicMemberInstance tablixDynamicMemberInstance = (TablixDynamicMemberInstance)tablixMember.Instance;
                 Stack <int> stack = new Stack <int>();
                 if (isTopLevel)
                 {
                     tablixDynamicMemberInstance.ResetContext();
                 }
                 while (tablixDynamicMemberInstance.MoveNext())
                 {
                     this.VisitTablixMember(tablixMember, rowMemberIndex, stack);
                 }
                 for (int j = 0; j < stack.Count; j++)
                 {
                     this.WriteDocumentMapEndContainer();
                 }
             }
         }
     }
 }
Exemple #3
0
        internal static int AddMembersToCurrentPage(Microsoft.ReportingServices.OnDemandReportRendering.Tablix tablix, TablixMember memberParent, int rowMemberIndexCell, State state, bool createDetail, bool noRows, PageContext context, bool useForPageHFEval, Interactivity interactivity)
        {
            TablixMemberCollection tablixMemberCollection = null;

            if (memberParent == null)
            {
                if (state == State.RowMembers)
                {
                    tablixMemberCollection = tablix.RowHierarchy.MemberCollection;
                }
                else
                {
                    if (state == State.ColMembers)
                    {
                        AddCornerToCurrentPage(tablix.Corner, context, useForPageHFEval, interactivity);
                    }
                    tablixMemberCollection = tablix.ColumnHierarchy.MemberCollection;
                }
            }
            else
            {
                tablixMemberCollection = memberParent.Children;
            }
            if (tablixMemberCollection == null)
            {
                if (state == State.RowMembers)
                {
                    AddMembersToCurrentPage(tablix, null, memberParent.MemberCellIndex, State.DetailRows, createDetail, noRows, context, useForPageHFEval, interactivity);
                }
                else if (createDetail)
                {
                    AddDetailCellToCurrentPage(tablix, memberParent.MemberCellIndex, rowMemberIndexCell, context, useForPageHFEval, interactivity);
                }
                if (!useForPageHFEval)
                {
                    return(0);
                }
                return(1);
            }
            bool                        flag                        = true;
            bool                        flag2                       = true;
            TablixMember                tablixMember                = null;
            TablixMemberInstance        tablixMemberInstance        = null;
            TablixDynamicMemberInstance tablixDynamicMemberInstance = null;
            int  num   = 0;
            bool flag3 = useForPageHFEval;

            for (int i = 0; i < tablixMemberCollection.Count; i++)
            {
                flag3        = useForPageHFEval;
                tablixMember = tablixMemberCollection[i];
                if (noRows && tablixMember.HideIfNoRows)
                {
                    if (interactivity == null)
                    {
                        continue;
                    }
                    flag3 = false;
                }
                flag = true;
                tablixMemberInstance = tablixMember.Instance;
                if (tablixMember.IsStatic)
                {
                    flag2 = WalkTablixMember(tablixMember, ref flag3, interactivity);
                }
                else
                {
                    tablixDynamicMemberInstance = (TablixDynamicMemberInstance)tablixMemberInstance;
                    tablixDynamicMemberInstance.ResetContext();
                    flag = tablixDynamicMemberInstance.MoveNext();
                    if (flag)
                    {
                        flag2 = WalkTablixMember(tablixMember, ref flag3, interactivity);
                    }
                }
                while (flag)
                {
                    if (flag2)
                    {
                        int num2 = AddMembersToCurrentPage(tablix, tablixMember, rowMemberIndexCell, state, createDetail, noRows, context, flag3, interactivity);
                        if (state != State.DetailRows)
                        {
                            interactivity?.RegisterGroupLabel(tablixMember.Group, context);
                            if (tablixMember.TablixHeader != null)
                            {
                                if (num2 > 0)
                                {
                                    RegisterItem.RegisterHiddenItem(tablixMember.TablixHeader.CellContents.ReportItem, context, flag3, interactivity);
                                    num++;
                                }
                                else if (interactivity != null)
                                {
                                    RegisterItem.RegisterHiddenItem(tablixMember.TablixHeader.CellContents.ReportItem, context, useForPageHFEval: false, interactivity);
                                }
                            }
                        }
                    }
                    if (tablixMember.IsStatic)
                    {
                        flag = false;
                        continue;
                    }
                    flag = tablixDynamicMemberInstance.MoveNext();
                    if (flag)
                    {
                        flag3 = useForPageHFEval;
                        flag2 = WalkTablixMember(tablixMember, ref flag3, interactivity);
                    }
                }
                tablixMemberInstance = null;
            }
            return(num);
        }
        private static int CollectTablixMembersContents(Microsoft.ReportingServices.OnDemandReportRendering.Tablix tablix, TablixMember memberParent, int rowMemberIndexCell, TablixState state, bool noRows, PageContext context, bool useForPageHFEval, Dictionary <string, List <object> > textBoxes)
        {
            TablixMemberCollection tablixMemberCollection = null;

            if (memberParent == null)
            {
                if (state == TablixState.RowMembers)
                {
                    tablixMemberCollection = tablix.RowHierarchy.MemberCollection;
                }
                else
                {
                    if (state == TablixState.ColMembers)
                    {
                        CollectTablixCornerContents(tablix.Corner, context, useForPageHFEval, textBoxes);
                    }
                    tablixMemberCollection = tablix.ColumnHierarchy.MemberCollection;
                }
            }
            else
            {
                tablixMemberCollection = memberParent.Children;
            }
            if (tablixMemberCollection == null)
            {
                if (state == TablixState.RowMembers)
                {
                    CollectTablixMembersContents(tablix, null, memberParent.MemberCellIndex, TablixState.DetailRows, noRows, context, useForPageHFEval, textBoxes);
                }
                else
                {
                    CollectDetailCellContents(tablix, memberParent.MemberCellIndex, rowMemberIndexCell, context, useForPageHFEval, textBoxes);
                }
                if (!useForPageHFEval)
                {
                    return(0);
                }
                return(1);
            }
            bool                        flag                        = true;
            bool                        flag2                       = true;
            TablixMember                tablixMember                = null;
            TablixMemberInstance        tablixMemberInstance        = null;
            TablixDynamicMemberInstance tablixDynamicMemberInstance = null;
            int  num   = 0;
            bool flag3 = useForPageHFEval;

            for (int i = 0; i < tablixMemberCollection.Count; i++)
            {
                flag3        = useForPageHFEval;
                tablixMember = tablixMemberCollection[i];
                if (noRows && tablixMember.HideIfNoRows)
                {
                    continue;
                }
                flag = true;
                tablixMemberInstance = tablixMember.Instance;
                if (tablixMember.IsStatic)
                {
                    flag2 = ShouldBeCollected(tablixMember, ref flag3);
                }
                else
                {
                    tablixDynamicMemberInstance = (TablixDynamicMemberInstance)tablixMemberInstance;
                    tablixDynamicMemberInstance.ResetContext();
                    flag = tablixDynamicMemberInstance.MoveNext();
                    if (flag)
                    {
                        flag2 = ShouldBeCollected(tablixMember, ref flag3);
                    }
                }
                while (flag)
                {
                    if (flag2)
                    {
                        int num2 = CollectTablixMembersContents(tablix, tablixMember, rowMemberIndexCell, state, noRows, context, flag3, textBoxes);
                        if (state != TablixState.DetailRows && tablixMember.TablixHeader != null && num2 > 0)
                        {
                            CollectTextBoxes(tablixMember.TablixHeader.CellContents.ReportItem, context, flag3, textBoxes);
                            num++;
                        }
                    }
                    if (tablixMember.IsStatic)
                    {
                        flag = false;
                        continue;
                    }
                    flag = tablixDynamicMemberInstance.MoveNext();
                    if (flag)
                    {
                        flag3 = useForPageHFEval;
                        flag2 = ShouldBeCollected(tablixMember, ref flag3);
                    }
                }
                tablixMemberInstance = null;
            }
            return(num);
        }
        private static int CollectTablixMembersContents(AspNetCore.ReportingServices.OnDemandReportRendering.Tablix tablix, TablixMember memberParent, int rowMemberIndexCell, TablixState state, bool noRows, PageContext context, bool useForPageHFEval, Dictionary <string, List <object> > textBoxes)
        {
            TablixMemberCollection tablixMemberCollection = null;

            if (memberParent == null)
            {
                switch (state)
                {
                case TablixState.RowMembers:
                    tablixMemberCollection = tablix.RowHierarchy.MemberCollection;
                    break;

                case TablixState.ColMembers:
                    HeaderFooterEval.CollectTablixCornerContents(tablix.Corner, context, useForPageHFEval, textBoxes);
                    goto default;

                default:
                    tablixMemberCollection = tablix.ColumnHierarchy.MemberCollection;
                    break;
                }
            }
            else
            {
                tablixMemberCollection = memberParent.Children;
            }
            if (tablixMemberCollection == null)
            {
                if (state == TablixState.RowMembers)
                {
                    HeaderFooterEval.CollectTablixMembersContents(tablix, null, memberParent.MemberCellIndex, TablixState.DetailRows, noRows, context, useForPageHFEval, textBoxes);
                }
                else
                {
                    HeaderFooterEval.CollectDetailCellContents(tablix, memberParent.MemberCellIndex, rowMemberIndexCell, context, useForPageHFEval, textBoxes);
                }
                if (!useForPageHFEval)
                {
                    return(0);
                }
                return(1);
            }
            bool                        flag                        = true;
            bool                        flag2                       = true;
            TablixMember                tablixMember                = null;
            TablixMemberInstance        tablixMemberInstance        = null;
            TablixDynamicMemberInstance tablixDynamicMemberInstance = null;
            int  num = 0;
            bool useForPageHFEval2 = useForPageHFEval;

            for (int i = 0; i < tablixMemberCollection.Count; i++)
            {
                useForPageHFEval2 = useForPageHFEval;
                tablixMember      = ((ReportElementCollectionBase <TablixMember>)tablixMemberCollection)[i];
                if (!noRows || !tablixMember.HideIfNoRows)
                {
                    flag = true;
                    tablixMemberInstance = tablixMember.Instance;
                    if (tablixMember.IsStatic)
                    {
                        flag2 = HeaderFooterEval.ShouldBeCollected(tablixMember, ref useForPageHFEval2);
                    }
                    else
                    {
                        tablixDynamicMemberInstance = (TablixDynamicMemberInstance)tablixMemberInstance;
                        tablixDynamicMemberInstance.ResetContext();
                        flag = tablixDynamicMemberInstance.MoveNext();
                        if (flag)
                        {
                            flag2 = HeaderFooterEval.ShouldBeCollected(tablixMember, ref useForPageHFEval2);
                        }
                    }
                    while (flag)
                    {
                        if (flag2)
                        {
                            int num2 = HeaderFooterEval.CollectTablixMembersContents(tablix, tablixMember, rowMemberIndexCell, state, noRows, context, useForPageHFEval2, textBoxes);
                            if (state != TablixState.DetailRows && tablixMember.TablixHeader != null && num2 > 0)
                            {
                                HeaderFooterEval.CollectTextBoxes(tablixMember.TablixHeader.CellContents.ReportItem, context, useForPageHFEval2, textBoxes);
                                num++;
                            }
                        }
                        if (tablixMember.IsStatic)
                        {
                            flag = false;
                        }
                        else
                        {
                            flag = tablixDynamicMemberInstance.MoveNext();
                            if (flag)
                            {
                                useForPageHFEval2 = useForPageHFEval;
                                flag2             = HeaderFooterEval.ShouldBeCollected(tablixMember, ref useForPageHFEval2);
                            }
                        }
                    }
                    tablixMemberInstance = null;
                }
            }
            return(num);
        }