Пользовательские имена для агрегатов - PullRequest
1 голос
/ 30 октября 2019

При использовании различных агрегаторных фабрик есть метод или переопределение, которые позволят определить пользовательское имя для метки возврата. Например, вызов SumAggregatoryFactory для суммирования поля «Сумма» вернет метку строки «Сумма суммы». Что если вместо этого мы хотим, чтобы это было «Общая сумма», «Итого» или какое-то другое пользовательское значение?

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Если вы используете средства записи PivotData Toolkit (например, PivotTableHtmlWriter), вы можете настроить метки мер так же, как вы, с помощью свойства FormatMeasureHeader:

pvtHtmlWr.FormatMeasureHeader = (aggrFactory, measureIndex) => {
  // customize header by factory type or measure index
  return aggrFactory.ToString();
};

(см. Также: https://www.nrecosite.com/pivotdata/format-pivot-table.aspx).

В случаепользовательского рендеринга вы можете определить свое собственное форматирование имен мер с учетом типа агрегатора.

0 голосов
/ 31 октября 2019

Создайте ResultAmount класс. Это вернет описание результата, а не строку. Примерно так:

        class ResultAmount
        {
            public string Label { get; set; }
            public decimal SumAmount { get; set; }

            public override string ToString()
            {
                return $"{Label}: {SumAmount}";
            }
        }

Для разных фабрик значение Label может отличаться. Тогда у вас есть фабрика:

        class TotalCalculations
        {
            public ResultAmount SumAggregatoryFactory()
            {
                return new ResultAmount
                {
                    Label = "Total",
                    SumAmount = 100
                };
            }
        }

И точка вызова фабрики:

    class BillingService
    {
        public void Print(TotalCalculations calc)
        {
            //when calling the method, you can use the standard Label                
            string original = calc.SumAggregatoryFactory().ToString();

             //or take only the sum and configure the result string yourself
            string custom = $"My message: {calc.SumAggregatoryFactory().SumAmount}";
        }
    }
...