コード例 #1
0
 /// <summary>
 /// Sets the formatter to use for this listener.
 /// </summary>
 /// <param name="formatterNodeReference">
 /// A <see cref="FormatterNode"/> reference or <see langword="null"/> if no formatter is defined.
 /// </param>
 protected override void SetFormatterReference(ConfigurationNode formatterNodeReference)
 {
     if (formatterName == formatterNodeReference.Name)
     {
         Formatter = (FormatterNode)formatterNodeReference;
     }
 }
コード例 #2
0
        private void CreateFormatterNode(FormatterData formatterData)
        {
            FormatterNode formatterNode = NodeCreationService.CreateNodeByDataType(formatterData.GetType(), new object[] { formatterData }) as FormatterNode;

            if (null == formatterNode)
            {
                LogNodeMapError(node, formatterData.GetType());
                return;
            }
            node.AddNode(formatterNode);
        }
コード例 #3
0
 private void OnFormatterNodeRemoved(object sender, ConfigurationNodeChangedEventArgs e)
 {
     formatterNode = null;
 }
コード例 #4
0
        // Закомментил старое

        /*protected override void WriteColumns(tablelayoutClass LayoutProfile, XslFOProfileWriter RepGen, DataTable oTable, LayoutColumns Columns, ReportParams Params, object CustomData, IDictionary Vars)
         *      {
         *              base.WriteColumns(LayoutProfile, RepGen, oTable, Columns, Params, CustomData, Vars);
         *
         *              // создаем копию существующих столбцов
         *              // для накопления общих итогов только по помеченным строкам
         *              m_TotalColumns = cloneLayoutColumns(Columns);
         *      } */

        /// <summary>
        /// Вычисляет данные ячейки таблицы лэйаута
        /// </summary>
        /// <remarks>Переопределяем стандартный метод</remarks>

        protected override ReportFormatterData CalculateCellValue(ReportLayoutData LayoutData, TableLayout.LayoutColumns Columns, int RowNum, int ColumnNum, DataRow CurrentRow, int RowSpan)
        {
            // значение в ячейке
            object CurrentValue = null;
            // получаем объект, с которым работают форматтеры и эвалуаторы
            ReportFormatterData FormatterData = new ReportFormatterData(
                LayoutData,
                CurrentValue,
                null,
                CurrentRow,
                RowNum,
                ColumnNum);

            if (string.Empty == Columns[ColumnNum].RSFileldName)        // если текущее значение не соответсвует никакой колонке рекордсета
            {
                if (Columns[ColumnNum].ColumnIsCounter)                 // если колонка - счетчик
                {
                    // текущее значение счетчика
                    CurrentValue = Columns[ColumnNum].CounterCurrent.ToString();
                    // инкрементируем счетчик
                    Columns[ColumnNum].IncrementCounter();
                }
                else                 // null иначе
                {
                    CurrentValue = null;
                }
            }
            else             // значение
            {
                CurrentValue = new Croc.XmlFramework.ReportService.Utility.MacroProcessor(FormatterData).Process(Columns[ColumnNum].RSFileldName);
            }
            // Encoding
            if (Columns[ColumnNum].Encoding == encodingtype.text)
            {
                CurrentValue = System.Web.HttpUtility.HtmlEncode(CurrentValue.ToString());
            }
            FormatterData.CurrentValue = CurrentValue;
            // проходим по эвалуаторам и форматтерам
            if (Columns[ColumnNum].Formatters != null)
            {
                foreach (abstractformatterClass FormatterNode in Columns[ColumnNum].Formatters)
                {
                    if (!FormatterNode.useSpecified || FormatterNode.use != usetype.totalcell)
                    {
                        // просим объект у фабрики
                        IReportFormatter Formatter = (IReportFormatter)ReportObjectFactory.GetInstance(FormatterNode.GetAssembly(), FormatterNode.GetClass());

                        // делаем что-то
                        Formatter.Execute(FormatterNode, FormatterData);
                    }
                }
            }

            if (string.Empty != Columns[ColumnNum].AggregationFunction)
            {
                Columns[ColumnNum].UpdateTotals(CurrentValue);

                // проапдейтим итоги по помеченным строкам
                bool bNoTotals;
                try
                {
                    // берем из строки рекорсета столбец NoTotals
                    bNoTotals = Convert.ToBoolean(CurrentRow[NOTOTALS_COLUMN_NAME]);
                }
                catch (Exception)
                {
                    // если, что-то пошло не так, считаем, что нужно
                    // пересчитывать итоги (как обычно)
                    bNoTotals = false;
                }

                // пересчитаем итоги, если нужно
                if (!bNoTotals)
                {
                    TotalColumns[ColumnNum].UpdateTotals(CurrentValue);
                }
            }

            if (FormatterData.ClassName == null || FormatterData.ClassName == string.Empty)
            {
                FormatterData.ClassName = Columns[ColumnNum].CellCssClass;
            }

            return(FormatterData);
        }
コード例 #5
0
 private void OnDefaultFormatterNodeRemoved(object sender, ConfigurationNodeChangedEventArgs e)
 {
     this.defaultFormatterNode.Removed -= new ConfigurationNodeChangedEventHandler(this.OnDefaultFormatterNodeRemoved);
     this.defaultFormatterNode          = null;
 }