Beispiel #1
0
 public override void Advance()
 {
     using (m_lastInnerGroupLeafRef.PinValue())
     {
         using (m_lastOuterGroupLeafRef.PinValue())
         {
             RuntimeDataTablixGroupLeafObj runtimeDataTablixGroupLeafObj = m_lastInnerGroupLeafRef.Value();
             RuntimeDataTablixGroupLeafObj rowGroupLeaf = m_lastOuterGroupLeafRef.Value();
             OnDemandStateManager          stateManager = m_odpContext.StateManager;
             ObjectModelImpl reportObjectModel          = m_odpContext.ReportObjectModel;
             if (m_idcDataSet.DataSetCore.FieldsContext != null)
             {
                 reportObjectModel.RestoreFields(m_idcDataSet.DataSetCore.FieldsContext);
             }
             while (SetupNextRow(m_lastOuterPrimaryKeyValues, m_activeOuterRelationship, m_lastInnerPrimaryKeyValues, m_activeInnerRelationship))
             {
                 ApplyGroupingFieldsForServerAggregates(m_cellScope);
                 bool rowAccepted = runtimeDataTablixGroupLeafObj.GetOrCreateCell(rowGroupLeaf).NextRow();
                 if (stateManager.ShouldStopPipelineAdvance(rowAccepted))
                 {
                     break;
                 }
             }
         }
     }
 }
        public override void Advance()
        {
            OnDemandStateManager stateManager      = m_odpContext.StateManager;
            ObjectModelImpl      reportObjectModel = m_odpContext.ReportObjectModel;

            if (m_idcDataSet.DataSetCore.FieldsContext != null)
            {
                reportObjectModel.RestoreFields(m_idcDataSet.DataSetCore.FieldsContext);
            }
            using (m_lastRuntimeReceiver.PinValue())
            {
                IDataCorrelation dataCorrelation = m_lastRuntimeReceiver.Value();
                while (SetupCorrelatedRow(startWithCurrentRow: false))
                {
                    ApplyGroupingFieldsForServerAggregates(m_idcReportDataScope);
                    bool rowAccepted = dataCorrelation.NextCorrelatedRow();
                    if (stateManager.ShouldStopPipelineAdvance(rowAccepted))
                    {
                        break;
                    }
                }
            }
        }