private void Traverse(DataFieldRow dataRow, ProcessingStages operation, DataRowSortOwnerTraversalContext context, IHierarchyObj owner) { dataRow.SetFields(owner.OdpContext.ReportObjectModel.FieldsImpl); if (operation == ProcessingStages.UserSortFilter) { owner.ReadRow(); } else { context.SortOwner.PostDataRowSortNextRow(); } }
void IDataRowSortOwner.DataRowSortTraverse() { try { ITraversalContext traversalContext = new DataRowSortOwnerTraversalContext(this); m_sortedDataRowTree.Traverse(ProcessingStages.Grouping, m_dataRowSortExpression.Direction, traversalContext); } finally { m_inDataRowSortPhase = false; m_sortedDataRowTree.Dispose(); m_sortedDataRowTree = null; m_dataRowSortExpression = null; } }
internal void Traverse(ProcessingStages operation, ITraversalContext traversalContext, IHierarchyObj owner) { Global.Tracer.Assert(ProcessingStages.UserSortFilter == operation || owner.InDataRowSortPhase, "Invalid call to RuntimeSortDataHolder.Traverse. Must be in UserSortFilter stage or InDataRowSortPhase"); if (m_firstRow == null) { return; } DataRowSortOwnerTraversalContext context = traversalContext as DataRowSortOwnerTraversalContext; Traverse(m_firstRow, operation, context, owner); if (m_dataRows != null) { for (int i = 0; i < m_dataRows.Count; i++) { Traverse(m_dataRows[i], operation, context, owner); } } }