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 = SearchRangeCells(matrix, matrixMember.MemberCellIndex, hiddenColumns, searchContext); } num++; } return(flag); }
private void CalculateGroupsCellsBeforeRowHeaders() { m_groupsBeforeRowHeaders = ((Microsoft.ReportingServices.ReportProcessing.Matrix)base.ReportItemDef).GroupsBeforeRowHeaders; if (m_groupsBeforeRowHeaders > 0 && base.ReportItemInstance != null) { MatrixHeadingInstanceList columnInstances = ((MatrixInstance)base.ReportItemInstance).ColumnInstances; MatrixMemberCollection matrixMemberCollection = null; int num = -1; if (columnInstances != null && 0 < columnInstances.Count) { num = columnInstances.Count - 1; if (columnInstances[0].IsSubtotal || (m_groupsBeforeRowHeaders == num && columnInstances[num].IsSubtotal)) { m_groupsBeforeRowHeaders++; } } m_cellsBeforeRowHeaders = 0; if (m_groupsBeforeRowHeaders > num + 1) { m_groupsBeforeRowHeaders = 0; } else { matrixMemberCollection = ColumnMemberCollection; } for (int i = 0; i < m_groupsBeforeRowHeaders; i++) { m_cellsBeforeRowHeaders += matrixMemberCollection[i].ColumnSpan; } } else { m_groupsBeforeRowHeaders = 0; m_cellsBeforeRowHeaders = 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; } BuildHiddenColumns(matrixMember, ref hiddenColumns); num3--; } else { flag = matrixMember.ReportItem.Search(searchContext2); if (!flag) { matrixMemberCollection = matrixMember.Children; flag = 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); }
private static bool SearchMatrixRowsContent(Matrix matrix, MatrixMember member, SearchContext searchContext, IntList hiddenColumns) { bool flag = false; int startMember = 0; int endMember = 0; int num = 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 startMember, out endMember); } else { member.GetChildRowMembersOnPage(searchContext.SearchPage, out startMember, out endMember); } flag2 = true; } else { startMember = 0; endMember = matrixMemberCollection2.Count - 1; } num = endMember - startMember + 1; int num2 = startMember; while (!flag && num2 <= endMember) { matrixMember = matrixMemberCollection2[num2]; if (matrixMember.Hidden) { num--; } else { matrixMemberCollection = matrixMember.Children; if (matrixMemberCollection != null) { flag = matrixMember.ReportItem.Search(searchContext2); if (!flag) { if (flag2 && (num2 == startMember || num2 == endMember)) { int startPage = 0; int endPage = 0; SearchContext searchContext3 = new SearchContext(searchContext); if (member == null) { matrix.IsRowMemberOnThisPage(num2, searchContext.SearchPage, out startPage, out endPage); } else { member.IsRowMemberOnThisPage(num2, searchContext.SearchPage, out startPage, out endPage); } searchContext3.ItemStartPage = startPage; searchContext3.ItemEndPage = endPage; flag = SearchMatrixRowsContent(matrix, matrixMember, searchContext3, hiddenColumns); } else { flag = SearchMatrixRowsContent(matrix, matrixMember, searchContext2, hiddenColumns); } } } else { flag = matrixMember.ReportItem.Search(searchContext2); if (!flag) { flag = SearchRangeCells(matrix, matrixMember.MemberCellIndex, hiddenColumns, searchContext2); } } } num2++; } if (!flag && num == 0) { if (!matrixMember.IsTotal) { matrixMember = matrixMemberCollection2[0]; } matrixMemberCollection = matrixMember.Children; flag = ((matrixMemberCollection == null) ? SearchRangeCells(matrix, matrixMember.MemberCellIndex, hiddenColumns, searchContext2) : SearchRowTotal(matrix, matrixMemberCollection, hiddenColumns, searchContext2)); } return(flag); }