public DataElementOutputTypes DataElementOutputForStatic(MatrixMember staticHeading)
 {
     if (!this.IsStatic)
     {
         return(this.DataElementOutput);
     }
     if (staticHeading != null && (!staticHeading.IsStatic || staticHeading.Parent == this.Parent))
     {
         staticHeading = null;
     }
     if (staticHeading != null)
     {
         int index;
         int index2;
         if (this.m_headingDef.IsColumn)
         {
             index  = staticHeading.m_index;
             index2 = this.m_index;
         }
         else
         {
             index  = this.m_index;
             index2 = staticHeading.m_index;
         }
         return(this.GetDataElementOutputTypeFromCell(index, index2));
     }
     AspNetCore.ReportingServices.ReportProcessing.Matrix matrix = (AspNetCore.ReportingServices.ReportProcessing.Matrix)base.OwnerDataRegion.ReportItemDef;
     if (matrix.PivotStaticColumns != null && matrix.PivotStaticRows != null)
     {
         Global.Tracer.Assert(matrix.PivotStaticColumns != null && matrix.PivotStaticRows != null);
         return(this.GetDataElementOutputTypeForRowCol(this.m_index));
     }
     return(this.GetDataElementOutputTypeFromCell(0, this.m_index));
 }
示例#2
0
 private static void BuildHiddenColumns(MatrixMember member, ref IntList hiddenColumns)
 {
     if (hiddenColumns == null)
     {
         hiddenColumns = new IntList();
     }
     for (int i = 0; i < member.ColumnSpan; i++)
     {
         hiddenColumns.Add(member.MemberCellIndex + i);
     }
 }
示例#3
0
 public MatrixMember this[int index]
 {
     get
     {
         if (index >= 0 && index < this.Count)
         {
             MatrixMember matrixMember = null;
             if (index == 0)
             {
                 matrixMember = this.m_firstMember;
             }
             else if (this.m_members != null)
             {
                 matrixMember = this.m_members[index - 1];
             }
             if (matrixMember == null)
             {
                 bool isSubtotal = false;
                 MatrixHeadingInstance matrixHeadingInstance = null;
                 if (this.m_memberMapping != null && index < this.m_memberMapping.Count)
                 {
                     matrixHeadingInstance = this.m_headingInstances[this.m_memberMapping[index]];
                     isSubtotal            = matrixHeadingInstance.IsSubtotal;
                 }
                 else if (this.m_subTotalPosition >= 0 && index == this.m_subTotalPosition)
                 {
                     isSubtotal = true;
                 }
                 matrixMember = new MatrixMember(this.m_owner, this.m_parent, this.m_headingDef, matrixHeadingInstance, isSubtotal, this.m_isParentSubTotal, index);
                 if (this.m_owner.RenderingContext.CacheState)
                 {
                     if (index == 0)
                     {
                         this.m_firstMember = matrixMember;
                     }
                     else
                     {
                         if (this.m_members == null)
                         {
                             this.m_members = new MatrixMember[this.Count - 1];
                         }
                         this.m_members[index - 1] = matrixMember;
                     }
                 }
             }
             return(matrixMember);
         }
         throw new RenderingObjectModelException(ProcessingErrorCode.rsInvalidParameterRange, index, 0, this.Count);
     }
 }
 public MatrixMember(Matrix owner, MatrixMember parent, MatrixHeading headingDef, MatrixHeadingInstance headingInstance, bool isSubtotal, bool isParentSubTotal, int index)
     : base(owner, headingDef.Grouping, headingDef.Visibility)
 {
     this.m_parent           = parent;
     this.m_headingDef       = headingDef;
     this.m_headingInstance  = headingInstance;
     this.m_isSubtotal       = isSubtotal;
     this.m_isParentSubTotal = isParentSubTotal;
     this.m_index            = index;
     if (this.m_headingInstance != null)
     {
         base.m_uniqueName = this.m_headingInstance.UniqueName;
     }
 }
示例#5
0
        private static bool SearchRowTotal(Matrix matrix, MatrixMemberCollection rowTotalChildren, IntList hiddenColumns, SearchContext searchContext)
        {
            bool         flag         = false;
            MatrixMember matrixMember = null;
            int          num          = 0;

            while (!flag && num < rowTotalChildren.Count)
            {
                matrixMember = rowTotalChildren[num];
                flag         = matrixMember.ReportItem.Search(searchContext);
                if (!flag)
                {
                    flag = Matrix.SearchRangeCells(matrix, matrixMember.MemberCellIndex, hiddenColumns, searchContext);
                }
                num++;
            }
            return(flag);
        }
示例#6
0
 public MatrixMemberCollection(Matrix owner, MatrixMember parent, MatrixHeading headingDef, MatrixHeadingInstanceList headingInstances, List <int> memberMapping, bool isParentSubTotal)
 {
     this.m_owner            = owner;
     this.m_parent           = parent;
     this.m_headingInstances = headingInstances;
     this.m_headingDef       = headingDef;
     this.m_memberMapping    = memberMapping;
     this.m_isParentSubTotal = isParentSubTotal;
     if (owner.NoRows)
     {
         Subtotal subtotal = this.m_headingDef.Subtotal;
         if (subtotal != null)
         {
             if (subtotal.Position == Subtotal.PositionType.After)
             {
                 this.m_subTotalPosition = 1;
             }
             else
             {
                 this.m_subTotalPosition = 0;
             }
         }
     }
 }
示例#7
0
        private static bool SearchMatrixColumns(MatrixMemberCollection columns, ref IntList hiddenColumns, SearchContext searchContext)
        {
            if (columns == null)
            {
                return(false);
            }
            bool                   flag                   = false;
            int                    num                    = 0;
            int                    num2                   = columns.Count - 1;
            int                    num3                   = 0;
            MatrixMember           matrixMember           = null;
            MatrixMemberCollection matrixMemberCollection = null;
            SearchContext          searchContext2         = new SearchContext(searchContext);
            int                    index                  = 0;
            int                    count                  = 0;

            num3 = num2 - num + 1;
            int num4 = num;

            while (!flag && num4 <= num2)
            {
                matrixMember = columns[num4];
                if (matrixMember.Hidden)
                {
                    if (matrixMember.IsTotal)
                    {
                        if (hiddenColumns != null)
                        {
                            index = hiddenColumns.Count;
                        }
                        count = matrixMember.ColumnSpan;
                    }
                    Matrix.BuildHiddenColumns(matrixMember, ref hiddenColumns);
                    num3--;
                }
                else
                {
                    flag = matrixMember.ReportItem.Search(searchContext2);
                    if (!flag)
                    {
                        matrixMemberCollection = matrixMember.Children;
                        flag = Matrix.SearchMatrixColumns(matrixMemberCollection, ref hiddenColumns, searchContext2);
                    }
                }
                num4++;
            }
            if (num3 == 0)
            {
                hiddenColumns.RemoveRange(index, count);
                if (!flag)
                {
                    if (!matrixMember.IsTotal)
                    {
                        matrixMember = columns[0];
                    }
                    matrixMemberCollection = matrixMember.Children;
                    if (matrixMemberCollection != null)
                    {
                        int num5 = 0;
                        while (!flag && num5 < matrixMemberCollection.Count)
                        {
                            matrixMember = matrixMemberCollection[num5];
                            flag         = matrixMember.ReportItem.Search(searchContext2);
                            num5++;
                        }
                    }
                }
            }
            return(flag);
        }
示例#8
0
        private static bool SearchMatrixRowsContent(Matrix matrix, MatrixMember member, SearchContext searchContext, IntList hiddenColumns)
        {
            bool                   flag                    = false;
            int                    num                     = 0;
            int                    num2                    = 0;
            int                    num3                    = 0;
            MatrixMember           matrixMember            = null;
            MatrixMemberCollection matrixMemberCollection  = null;
            MatrixMemberCollection matrixMemberCollection2 = null;
            SearchContext          searchContext2          = new SearchContext(searchContext);
            bool                   flag2                   = false;

            matrixMemberCollection2 = ((member != null) ? member.Children : matrix.RowMemberCollection);
            if (searchContext.ItemStartPage != searchContext.ItemEndPage)
            {
                if (member == null)
                {
                    matrix.GetRowMembersOnPage(searchContext.SearchPage, out num, out num2);
                }
                else
                {
                    member.GetChildRowMembersOnPage(searchContext.SearchPage, out num, out num2);
                }
                flag2 = true;
            }
            else
            {
                num  = 0;
                num2 = matrixMemberCollection2.Count - 1;
            }
            num3 = num2 - num + 1;
            int num4 = num;

            while (!flag && num4 <= num2)
            {
                matrixMember = matrixMemberCollection2[num4];
                if (matrixMember.Hidden)
                {
                    num3--;
                }
                else
                {
                    matrixMemberCollection = matrixMember.Children;
                    if (matrixMemberCollection != null)
                    {
                        flag = matrixMember.ReportItem.Search(searchContext2);
                        if (!flag)
                        {
                            if (flag2 && (num4 == num || num4 == num2))
                            {
                                int           itemStartPage  = 0;
                                int           itemEndPage    = 0;
                                SearchContext searchContext3 = new SearchContext(searchContext);
                                if (member == null)
                                {
                                    matrix.IsRowMemberOnThisPage(num4, searchContext.SearchPage, out itemStartPage, out itemEndPage);
                                }
                                else
                                {
                                    member.IsRowMemberOnThisPage(num4, searchContext.SearchPage, out itemStartPage, out itemEndPage);
                                }
                                searchContext3.ItemStartPage = itemStartPage;
                                searchContext3.ItemEndPage   = itemEndPage;
                                flag = Matrix.SearchMatrixRowsContent(matrix, matrixMember, searchContext3, hiddenColumns);
                            }
                            else
                            {
                                flag = Matrix.SearchMatrixRowsContent(matrix, matrixMember, searchContext2, hiddenColumns);
                            }
                        }
                    }
                    else
                    {
                        flag = matrixMember.ReportItem.Search(searchContext2);
                        if (!flag)
                        {
                            flag = Matrix.SearchRangeCells(matrix, matrixMember.MemberCellIndex, hiddenColumns, searchContext2);
                        }
                    }
                }
                num4++;
            }
            if (!flag && num3 == 0)
            {
                if (!matrixMember.IsTotal)
                {
                    matrixMember = matrixMemberCollection2[0];
                }
                matrixMemberCollection = matrixMember.Children;
                flag = ((matrixMemberCollection == null) ? Matrix.SearchRangeCells(matrix, matrixMember.MemberCellIndex, hiddenColumns, searchContext2) : Matrix.SearchRowTotal(matrix, matrixMemberCollection, hiddenColumns, searchContext2));
            }
            return(flag);
        }