예제 #1
0
 public void UpdateAggregatesForRow()
 {
     Global.Tracer.Assert(this.m_aggsForUpdateAtRowScope != null || this.m_runningValuesForUpdateAtRow != null, "UpdateAggregatesForRow must be driven by a call to UpdateAggregates.");
     if (this.m_aggsForUpdateAtRowScope != null)
     {
         foreach (AspNetCore.ReportingServices.ReportIntermediateFormat.DataAggregateObj item in this.m_aggsForUpdateAtRowScope)
         {
             item.Update();
         }
     }
     if (this.m_runningValuesForUpdateAtRow != null)
     {
         RuntimeDataTablixObj.UpdateRunningValues(this.m_odpContext, this.m_runningValuesForUpdateAtRow);
     }
 }
 public override void ReadRow(DataActions dataAction, ITraversalContext context)
 {
     if (DataActions.UserSort == dataAction)
     {
         RuntimeDataRegionObj.CommonFirstRow(base.m_odpContext, ref base.m_firstRowIsAggregate, ref base.m_firstRow);
         base.CommonNextRow(base.m_dataRows);
     }
     else if (DataActions.AggregatesOfAggregates == dataAction)
     {
         AggregateUpdateContext aggregateUpdateContext = (AggregateUpdateContext)context;
         aggregateUpdateContext.UpdateAggregatesForRow();
     }
     else
     {
         if (FlagUtils.HasFlag(dataAction, DataActions.PostSortAggregatesOfAggregates))
         {
             AggregateUpdateContext aggregateUpdateContext2 = (AggregateUpdateContext)context;
             aggregateUpdateContext2.UpdateAggregatesForRow();
         }
         if (!base.m_dataRegionDef.ProcessCellRunningValues)
         {
             if (FlagUtils.HasFlag(dataAction, DataActions.PostSortAggregates))
             {
                 if (base.m_postSortAggregates != null)
                 {
                     RuntimeDataRegionObj.UpdateAggregates(base.m_odpContext, base.m_postSortAggregates, false);
                 }
                 if (base.m_runningValues != null)
                 {
                     RuntimeDataTablixObj.UpdateRunningValues(base.m_odpContext, base.m_runningValues);
                 }
             }
             if (base.m_outerScope != null && (dataAction & base.m_outerDataAction) != 0)
             {
                 using (base.m_outerScope.PinValue())
                 {
                     IScope scope = base.m_outerScope.Value();
                     scope.ReadRow(dataAction, context);
                 }
             }
         }
     }
 }
예제 #3
0
 public bool UpdateAggregates(DataScopeInfo scopeInfo, IDataRowHolder scopeInst, AggregateUpdateFlags updateFlags, bool needsSetupEnvironment)
 {
     this.m_aggsForUpdateAtRowScope     = null;
     this.m_runningValuesForUpdateAtRow = null;
     if (this.m_activeAggregates == null)
     {
         return(false);
     }
     for (AggregateUpdateCollection aggregateUpdateCollection = this.m_activeAggregates; aggregateUpdateCollection != null; aggregateUpdateCollection = aggregateUpdateCollection.LinkedCollection)
     {
         List <AspNetCore.ReportingServices.ReportIntermediateFormat.DataAggregateObj> list = default(List <AspNetCore.ReportingServices.ReportIntermediateFormat.DataAggregateObj>);
         if (aggregateUpdateCollection.GetAggregatesForScope(scopeInfo.ScopeID, out list))
         {
             if (needsSetupEnvironment)
             {
                 scopeInst.SetupEnvironment();
                 needsSetupEnvironment = false;
             }
             foreach (AspNetCore.ReportingServices.ReportIntermediateFormat.DataAggregateObj item in list)
             {
                 item.Update();
             }
         }
         if (aggregateUpdateCollection.GetAggregatesForRowScope(scopeInfo.ScopeID, out list))
         {
             if (this.m_aggsForUpdateAtRowScope == null)
             {
                 this.m_aggsForUpdateAtRowScope = new List <AspNetCore.ReportingServices.ReportIntermediateFormat.DataAggregateObj>();
             }
             this.m_aggsForUpdateAtRowScope.AddRange(list);
         }
         List <string> list2 = default(List <string>);
         if (aggregateUpdateCollection.GetRunningValuesForScope(scopeInfo.ScopeID, out list2))
         {
             if (needsSetupEnvironment)
             {
                 scopeInst.SetupEnvironment();
                 needsSetupEnvironment = false;
             }
             RuntimeDataTablixObj.UpdateRunningValues(this.m_odpContext, list2);
         }
         if (aggregateUpdateCollection.GetRunningValuesForRowScope(scopeInfo.ScopeID, out list2))
         {
             if (this.m_runningValuesForUpdateAtRow == null)
             {
                 this.m_runningValuesForUpdateAtRow = new List <string>();
             }
             this.m_runningValuesForUpdateAtRow.AddRange(list2);
         }
     }
     if (this.m_aggsForUpdateAtRowScope != null || this.m_runningValuesForUpdateAtRow != null)
     {
         if (needsSetupEnvironment)
         {
             scopeInst.SetupEnvironment();
         }
         if (FlagUtils.HasFlag(updateFlags, AggregateUpdateFlags.RowAggregates))
         {
             scopeInst.ReadRows(DataActions.AggregatesOfAggregates, this);
         }
     }
     return(scopeInfo.ScopeID != this.m_activeAggregates.InnermostUpdateScopeID);
 }