Beispiel #1
0
        public void Add(LayoutCellWrapper cell,
                        int columnIndex,
                        int rowIndex)
        {
            m_Rows_Size    = Math.Max(rowIndex + 1, m_Rows_Size);
            m_Columns_Size = Math.Max(columnIndex + 1, m_Columns_Size);

            Dictionary <int, LayoutCellWrapper> columnDict = null;

            if (this.m_CellsCache.ContainsKey(rowIndex))
            {
                columnDict = this.m_CellsCache[rowIndex];
            }

            if (columnDict == null)
            {
                columnDict = new Dictionary <int, LayoutCellWrapper>();
                this.m_CellsCache.Add(rowIndex, columnDict);
            }

            if (!columnDict.ContainsKey(columnIndex))
            {
                columnDict.Add(columnIndex, cell);
            }
            else
            {
                columnDict[columnIndex] = cell;
            }
        }
        void AddToColumnsLayout(PivotMemberItem member)
        {
            if (member != null)
            {
                // Для данного элемента пытаемся получить по координатам LayoutCellWrapper
                LayoutCellWrapper itemWrapper = ColumnsLayout[member.ColumnIndex, member.RowIndex];
                if (itemWrapper == null)
                {
                    itemWrapper = new LayoutCellWrapper();
                    ColumnsLayout.Add(itemWrapper, member.ColumnIndex, member.RowIndex);
                }

                // Создаем описатель для данного элемента и добавляем его в коллекцию объектов ячейки сетки
                MemberLayoutItem item = new MemberLayoutItem(member);
                itemWrapper.Items.Add(item);
                item.RowSpan    = member.RowSpan;
                item.ColumnSpan = member.ColumnSpan;

                // Если элемент в ширину больше чем 1, то добавляем фиктивные элементы на сетку
                for (int i = 1; i < member.ColumnSpan; i++)
                {
                    LayoutCellWrapper ext_itemWrapper = ColumnsLayout[member.ColumnIndex + i, member.RowIndex];
                    if (ext_itemWrapper == null)
                    {
                        ext_itemWrapper = new LayoutCellWrapper();
                        ColumnsLayout.Add(ext_itemWrapper, member.ColumnIndex + i, member.RowIndex);
                    }

                    // Создаем описатель для фиктивного элемента
                    MemberLayoutItem ext_item = new MemberLayoutItem(member);
                    ext_item.IsExtension = true;
                    ext_itemWrapper.Items.Add(ext_item);
                    ext_item.ColumnSpan = member.ColumnSpan - i;
                    ext_item.RowSpan    = member.RowSpan;
                }

                foreach (PivotMemberItem dd_item in member.DrillDownChildren)
                {
                    AddToColumnsLayout(dd_item);
                }
                foreach (PivotMemberItem child_item in member.Children)
                {
                    AddToColumnsLayout(child_item);
                }
            }
        }
Beispiel #3
0
        public LayoutCellWrapper this[
            int columnIndex,
            int rowIndex]
        {
            get
            {
                LayoutCellWrapper res = null;
                Dictionary <int, LayoutCellWrapper> columnDict = null;
                if (this.m_CellsCache.ContainsKey(rowIndex))
                {
                    columnDict = this.m_CellsCache[rowIndex];
                }
                if (columnDict != null)
                {
                    if (columnDict.ContainsKey(columnIndex))
                    {
                        res = columnDict[columnIndex];
                    }
                }

                return(res);
            }
        }
        public void Add(LayoutCellWrapper cell,
            int columnIndex,
            int rowIndex)
        {
            m_Rows_Size = Math.Max(rowIndex + 1, m_Rows_Size);
            m_Columns_Size = Math.Max(columnIndex + 1, m_Columns_Size);

            Dictionary<int, LayoutCellWrapper> columnDict = null;
            if (this.m_CellsCache.ContainsKey(rowIndex))
            {
                columnDict = this.m_CellsCache[rowIndex];
            }

            if (columnDict == null)
            {
                columnDict = new Dictionary<int, LayoutCellWrapper>();
                this.m_CellsCache.Add(rowIndex, columnDict);
            }

            if (!columnDict.ContainsKey(columnIndex))
            {
                columnDict.Add(columnIndex, cell);
            }
            else
            {
                columnDict[columnIndex] = cell;
            }
        }
        void AddToColumnsLayout(PivotMemberItem member)
        {
            if (member != null)
            {
                // Для данного элемента пытаемся получить по координатам LayoutCellWrapper
                LayoutCellWrapper itemWrapper = ColumnsLayout[member.ColumnIndex, member.RowIndex];
                if (itemWrapper == null)
                {
                    itemWrapper = new LayoutCellWrapper();
                    ColumnsLayout.Add(itemWrapper, member.ColumnIndex, member.RowIndex);
                }

                // Создаем описатель для данного элемента и добавляем его в коллекцию объектов ячейки сетки
                MemberLayoutItem item = new MemberLayoutItem(member);
                itemWrapper.Items.Add(item);
                item.RowSpan = member.RowSpan;
                item.ColumnSpan = member.ColumnSpan;

                // Если элемент в ширину больше чем 1, то добавляем фиктивные элементы на сетку
                for (int i = 1; i < member.ColumnSpan; i++)
                {
                    LayoutCellWrapper ext_itemWrapper = ColumnsLayout[member.ColumnIndex + i, member.RowIndex];
                    if (ext_itemWrapper == null)
                    {
                        ext_itemWrapper = new LayoutCellWrapper();
                        ColumnsLayout.Add(ext_itemWrapper, member.ColumnIndex + i, member.RowIndex);
                    }

                    // Создаем описатель для фиктивного элемента
                    MemberLayoutItem ext_item = new MemberLayoutItem(member);
                    ext_item.IsExtension = true;
                    ext_itemWrapper.Items.Add(ext_item);
                    ext_item.ColumnSpan = member.ColumnSpan - i;
                    ext_item.RowSpan = member.RowSpan;
                }

                foreach (PivotMemberItem dd_item in member.DrillDownChildren)
                {
                    AddToColumnsLayout(dd_item);
                }
                foreach (PivotMemberItem child_item in member.Children)
                {
                    AddToColumnsLayout(child_item);
                }
            }
        }