private void CommonInitialize(int level, DataCellsList dataRowCells, ref int currentIndex, ref int maxLevel, InitializationContext context) { Initialize(context); if (m_customProperties != null) { context.RegisterRunningValues(m_runningValues); m_customProperties.Initialize(null, isCustomProperty: true, context); context.UnRegisterRunningValues(m_runningValues); } if (m_innerHeadings != null) { Global.Tracer.Assert(context.AggregateEscalateScopes != null); if (m_grouping != null) { context.AggregateEscalateScopes.Add(m_grouping.Name); } m_headingSpan += m_innerHeadings.Initialize(level + 1, dataRowCells, ref currentIndex, ref maxLevel, context); if (m_grouping != null) { context.AggregateEscalateScopes.RemoveAt(context.AggregateEscalateScopes.Count - 1); } } else { currentIndex++; } }
internal int Initialize(int level, DataCellsList dataRowCells, ref int currentIndex, ref int maxLevel, InitializationContext context) { int num = Count; int num2 = 0; for (int i = 0; i < num; i++) { Global.Tracer.Assert(this[i] != null); if (this[i].Initialize(level, this, i, dataRowCells, ref currentIndex, ref maxLevel, context)) { num++; num2 += this[i].HeadingSpan; } } return(num2); }
private static CustomReportItemHeadingList HeadingListClone(CustomReportItemHeadingList headings, DataCellsList dataRowCells, ref int currentIndex, int headingSpan, InitializationContext context) { if (headings == null) { return(null); } int count = headings.Count; Global.Tracer.Assert(1 <= count); CustomReportItemHeadingList customReportItemHeadingList = new CustomReportItemHeadingList(count); for (int i = 0; i < count; i++) { CustomReportItemHeading customReportItemHeading = headings[i]; if (customReportItemHeading.m_grouping != null) { context.AggregateRewriteScopes.Add(customReportItemHeading.m_grouping.Name, null); } CustomReportItemHeading customReportItemHeading2 = HeadingClone(customReportItemHeading, dataRowCells, ref currentIndex, headingSpan, context); if (customReportItemHeading.m_innerHeadings != null) { customReportItemHeading2.m_innerHeadings = HeadingListClone(customReportItemHeading.m_innerHeadings, dataRowCells, ref currentIndex, headingSpan, context); } if (customReportItemHeading.m_grouping != null) { context.AggregateRewriteScopes.Remove(customReportItemHeading.m_grouping.Name); } customReportItemHeadingList.Add(customReportItemHeading2); } return(customReportItemHeadingList); }
private static CustomReportItemHeading HeadingClone(CustomReportItemHeading heading, DataCellsList dataRowCells, ref int currentIndex, int headingSpan, InitializationContext context) { Global.Tracer.Assert(heading != null); CustomReportItemHeading customReportItemHeading = new CustomReportItemHeading(context.GenerateSubtotalID(), (CustomReportItem)heading.DataRegionDef); customReportItemHeading.m_isColumn = heading.m_isColumn; customReportItemHeading.m_level = heading.m_level; customReportItemHeading.m_static = true; customReportItemHeading.m_subtotal = false; customReportItemHeading.m_headingSpan = heading.m_headingSpan; if (heading.m_customProperties != null) { customReportItemHeading.m_customProperties = heading.m_customProperties.DeepClone(context); } if (heading.m_innerHeadings == null) { if (heading.m_isColumn) { int count = dataRowCells.Count; for (int i = 0; i < count; i++) { DataCellList dataCellList = dataRowCells[i]; Global.Tracer.Assert(currentIndex + headingSpan <= dataCellList.Count); dataCellList.Insert(currentIndex + headingSpan, dataCellList[currentIndex].DeepClone(context)); } } else { Global.Tracer.Assert(currentIndex + headingSpan <= dataRowCells.Count); DataCellList dataCellList2 = dataRowCells[currentIndex]; int count2 = dataCellList2.Count; DataCellList dataCellList3 = new DataCellList(count2); dataRowCells.Insert(currentIndex + headingSpan, dataCellList3); for (int j = 0; j < count2; j++) { dataCellList3.Add(dataCellList2[j].DeepClone(context)); } } currentIndex++; } return(customReportItemHeading); }
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); }