internal ShimDataMember(IDefinitionPath parentDefinitionPath, CustomReportItem owner, ShimDataMember parent, int parentCollectionIndex, bool isColumn, bool isStatic, Microsoft.ReportingServices.ReportRendering.DataMemberCollection renderMembers, int staticIndex)
            : base(parentDefinitionPath, owner, parent, parentCollectionIndex)
        {
            m_definitionStartIndex = owner.GetCurrentMemberCellDefinitionIndex();
            m_isColumn             = isColumn;
            m_isStatic             = isStatic;
            m_renderMembers        = renderMembers;
            m_staticIndex          = staticIndex;
            DataGroupingCollection children;

            if (isStatic)
            {
                children = renderMembers[staticIndex].Children;
            }
            else
            {
                m_group  = new Group(owner, new ShimRenderGroups(renderMembers));
                children = renderMembers[0].Children;
            }
            if (children != null)
            {
                m_children = new ShimDataMemberCollection(this, owner, isColumn, this, children);
            }
            else
            {
                owner.GetAndIncrementMemberCellDefinitionIndex();
            }
            m_definitionEndIndex = owner.GetCurrentMemberCellDefinitionIndex();
        }
        private void AppendDataRows(ShimDataMember rowParentMember, ShimDataMemberCollection rowMembers)
        {
            if (rowMembers == null)
            {
                m_dataRows.Add(new ShimDataRow(m_owner, m_dataRows.Count, rowParentMember));
                return;
            }
            int count = rowMembers.Count;

            for (int i = 0; i < count; i++)
            {
                ShimDataMember shimDataMember = rowMembers[i] as ShimDataMember;
                AppendDataRows(shimDataMember, shimDataMember.Children as ShimDataMemberCollection);
            }
        }
        private void GenerateDataCells(ShimDataMember rowParentMember, ShimDataMember columnParentMember, ShimDataMemberCollection columnMembers)
        {
            if (columnMembers == null)
            {
                m_cells.Add(new ShimDataCell(m_owner, m_rowIndex, m_cells.Count, rowParentMember, columnParentMember));
                return;
            }
            int count = columnMembers.Count;

            for (int i = 0; i < count; i++)
            {
                ShimDataMember shimDataMember = columnMembers[i] as ShimDataMember;
                GenerateDataCells(rowParentMember, shimDataMember, shimDataMember.Children as ShimDataMemberCollection);
            }
        }