예제 #1
0
        internal DataValueList DeepClone(InitializationContext context)
        {
            int           count         = Count;
            DataValueList dataValueList = new DataValueList(count);

            for (int i = 0; i < count; i++)
            {
                dataValueList.Add(this[i].DeepClone(context));
            }
            return(dataValueList);
        }
예제 #2
0
 internal bool Initialize(int level, CustomReportItemHeadingList peerHeadings, int headingIndex, DataCellsList dataRowCells, ref int currentIndex, ref int maxLevel, InitializationContext context)
 {
     m_level = level;
     if (level > maxLevel)
     {
         maxLevel = level;
     }
     context.ExprHostBuilder.DataGroupingStart(m_isColumn);
     if (m_static)
     {
         Global.Tracer.Assert(!m_subtotal);
         if (m_grouping != null)
         {
             context.ErrorContext.Register(ProcessingErrorCode.rsInvalidStaticDataGrouping, Severity.Error, context.ObjectType, context.ObjectName, "DataGrouping");
             m_grouping = null;
         }
         else
         {
             m_sorting = null;
             CommonInitialize(level, dataRowCells, ref currentIndex, ref maxLevel, context);
         }
     }
     else
     {
         if ((context.Location & LocationFlags.InDetail) != 0)
         {
             context.ErrorContext.Register(ProcessingErrorCode.rsInvalidDetailDataGrouping, Severity.Error, context.ObjectType, context.ObjectName, "DataGrouping");
             return(false);
         }
         if (m_grouping != null && m_grouping.CustomProperties != null)
         {
             if (m_customProperties == null)
             {
                 m_customProperties = new DataValueList(m_grouping.CustomProperties.Count);
             }
             m_customProperties.AddRange(m_grouping.CustomProperties);
             m_grouping.CustomProperties = null;
         }
         if (m_subtotal)
         {
             if (m_grouping != null)
             {
                 context.AggregateRewriteScopes = new Hashtable();
                 context.AggregateRewriteScopes.Add(m_grouping.Name, null);
             }
             Global.Tracer.Assert(peerHeadings[headingIndex] != null);
             int currentIndex2 = currentIndex;
             CustomReportItemHeading customReportItemHeading = HeadingClone(this, dataRowCells, ref currentIndex2, m_headingSpan, context);
             customReportItemHeading.m_innerHeadings = HeadingListClone(m_innerHeadings, dataRowCells, ref currentIndex2, m_headingSpan, context);
             Global.Tracer.Assert(currentIndex + m_headingSpan == currentIndex2);
             Global.Tracer.Assert(!customReportItemHeading.m_subtotal && m_subtotal);
             Global.Tracer.Assert(headingIndex < peerHeadings.Count);
             peerHeadings.Insert(headingIndex + 1, customReportItemHeading);
             context.AggregateRewriteScopes = null;
             context.AggregateRewriteMap    = null;
         }
         if (m_grouping != null)
         {
             context.Location |= LocationFlags.InGrouping;
             context.RegisterGroupingScope(m_grouping.Name, m_grouping.SimpleGroupExpressions, m_grouping.Aggregates, m_grouping.PostSortAggregates, m_grouping.RecursiveAggregates, m_grouping);
             ObjectType objectType = context.ObjectType;
             string     objectName = context.ObjectName;
             context.ObjectType = ObjectType.Grouping;
             context.ObjectName = m_grouping.Name;
             CommonInitialize(level, dataRowCells, ref currentIndex, ref maxLevel, context);
             context.ObjectType = objectType;
             context.ObjectName = objectName;
             context.UnRegisterGroupingScope(m_grouping.Name);
         }
         else
         {
             context.Location |= LocationFlags.InDetail;
             CommonInitialize(level, dataRowCells, ref currentIndex, ref maxLevel, context);
         }
     }
     m_exprHostID   = context.ExprHostBuilder.DataGroupingEnd(m_isColumn);
     m_hasExprHost |= (m_exprHostID >= 0);
     return(m_subtotal);
 }