Пример #1
0
        /// <summary>
        /// Формирует визуальное представление отчета на основании описания
        /// </summary>
        /// <param name="LayoutProfile">xml-профиль лэйаута</param>
        /// <param name="LayoutData">параметры</param>
        /// <remarks>Переопределяем стандартный метод</remarks>
        protected override void DoMake(abstractlayoutClass LayoutProfile, ReportLayoutData LayoutData)
        {
            base.DoMake(LayoutProfile, LayoutData);

            // очищаем столбцы итогов
            m_TotalColumns = null;
        }
Пример #2
0
 /// <summary>
 /// Рисует колонки таблицы лэйаута
 /// </summary>
 /// <remarks>Переопределяем стандартный метод</remarks>
 protected override void WriteColumns(tablelayoutClass LayoutProfile, ReportLayoutData LayoutData, DataTable oTable, TableLayout.LayoutColumns Columns)
 {
     base.WriteColumns(LayoutProfile, LayoutData, oTable, Columns);
     // создаем копию существующих столбцов
     // для накопления общих итогов только по помеченным строкам
     m_TotalColumns = cloneLayoutColumns(Columns);
 }
Пример #3
0
        /// <summary>
        /// Рисует колонки таблицы лэйаута
        /// </summary>
        /// <param name="LayoutProfile">профиль отчета</param>
        /// <param name="RepGen">репорт-райтер</param>
        /// <param name="oTable">ридер с данными</param>
        /// <param name="Columns">описание колонок лэйаута</param>
        /// <param name="Params">параметры</param>
        /// <param name="CustomData">пользовательские данные</param>
        /// <param name="Vars">переменные фрагмента отчета</param>
        protected override void WriteColumns(tablelayoutClass LayoutProfile, ReportLayoutData LayoutData, DataTable oTable, TableLayout.LayoutColumns Columns)
        {
            // строка с номерами скрытых колонок
            string HiddenColumns = string.Empty;

            if (LayoutProfile.hiddencolumnsparamname != null && LayoutProfile.hiddencolumnsparamname != "")
            {
                HiddenColumns = LayoutData.Params[LayoutProfile.hiddencolumnsparamname].ToString();
            }

            // приписываем с начала и с конца строки запятые для облегчения последующего поиска
            if (!HiddenColumns.StartsWith(","))
            {
                HiddenColumns = "," + HiddenColumns;
            }
            if (!HiddenColumns.EndsWith(","))
            {
                HiddenColumns += ",";
            }

            // xml-узел с профилями дефолтных для лэйаута эвалуаторов/форматтеров
            abstractformatterClass[] FormattersNode = LayoutProfile.formatters;

            if (LayoutProfile.col == null)
            {
                // если в профиле явно не описаны колонки отчета
                for (int i = 0; i < oTable.Columns.Count; i++)
                {
                    // добавляем колонку в коллекцию
                    Columns.Add(new LayoutColumn("{#" + oTable.Columns[i].ColumnName + "}", FormattersNode));
                    // добавлем колонку в отчет
                    LayoutData.RepGen.TAddColumn(oTable.Columns[i].ColumnName, align.ALIGN_CENTER, valign.VALIGN_MIDDLE, "TABLE_HEADER");
                }
            }
            else
            {
                // добавляем явно описанные колонки
                foreach (colClass ColNode in LayoutProfile.col)
                {
                    // рекурсивно добавляем колонки
                    InsertColumn(ColNode, null, LayoutProfile, LayoutData, Columns, HiddenColumns, FormattersNode);
                    //InsertColumn(ColNode, null, LayoutProfile, RepGen, Columns, Params, HiddenColumns, FormattersNode, CustomData, Vars);
                }

                // добавляем неявно описанные колонки
                foreach (DataColumn oDataColumn in oTable.Columns)
                {
                    writeVarColumn(LayoutProfile, LayoutData, Columns, oDataColumn, HiddenColumns, FormattersNode);
                }
            }

            // создаем копию существующих столбцов
            // для накопления общих итогов только по помеченным строкам
            m_TotalColumns = cloneLayoutColumns(Columns);
        }
Пример #4
0
        /// <summary>
        /// Клонирует коллекцию описаний столбцов
        /// </summary>
        /// <param name="columns"></param>
        /// <returns></returns>
        protected static LayoutColumns cloneLayoutColumns(LayoutColumns columns)
        {
            LayoutColumns cloneColumns = new LayoutColumns();

            for (int i = 0; i < columns.Count; i++)
            {
                if (!columns[i].ColumnIsCounter)
                {
                    // если столбец не счетчик, добавляем клонированный столбец
                    // для накопления подитогов только по помеченным строков
                    cloneColumns.Add(cloneLayoutColumn(columns[i]));
                }
                else
                {
                    // если столбец - счетчик, добавляем сам столбец,
                    // чтобы не сбивалась нумерация
                    cloneColumns.Add(columns[i]);
                }
            }
            return(cloneColumns);
        }