Пользовательские функции

Обсуждение Stimulsoft Reports.NET
Ответить
kavit
Сообщения: 47
Зарегистрирован: 23 янв 2014, 11:14

Пользовательские функции

Сообщение kavit »

Добрый день.

Существует возможность добавления собственных функций в отчеты? Например: число 23 нужно отображать как "двадцать три" или "зонт" => "зонты"
Вложения
Functions.png
Functions.png (20.82 КБ) 2646 просмотров
Stimulsoft 2014.1.1900.0 Winforms / Windows 7 / Visual Studio 2012 UP4
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Пользовательские функции

Сообщение HighAley »

Здравствуйте.

Для перевода чисел в строку вы можете использовать функцию Strings - ToWords - ToWordsRu()
Вы можете добавить свои функции перед вызовон дезайнера с помощью следующего статического метода:

Код: Выделить всё

public static StiFunction AddFunction(string category, string groupFunctionName, string functionName, string description, Type typeOfFunction, Type returnType, string returnDescription, Type []argumentTypes, string []argumentNames, string []argumentDescriptions)
Спасибо.
kavit
Сообщения: 47
Зарегистрирован: 23 янв 2014, 11:14

Re: Пользовательские функции

Сообщение kavit »

Получилось зарегистрировать функцию, но при открытии "Просмотра" в "Дизайнере", "Дизайнер" подвисает и ничего не показывает.

Регистрация функции выполняется следующим образом:

Код: Выделить всё

Type typeOfFunction = this.GetType();
Type returnType = typeof (string);
Type[] argumentTypes = { typeof (int) };
string[] argumentNames = { "value" };
string[] argumentDescriptions = { "Число для преобразования" };

StiFunctions.AddFunction(
    "User", 
    "Group", 
    "MyConvert", 
    "Пользовательская функция", 
    typeOfFunction, 
    returnType,
    "Строка с приставкой 'Ex: '",
    argumentTypes,
    argumentNames,
    argumentDescriptions
);
Вызов регистрации выполняется так:

Код: Выделить всё

var report = new StiReport();

report.Load(@"Data\Report.mrt");
report.RegBusinessObject("Item", list);
report.Dictionary.SynchronizeBusinessObjects(7);

AddFunction();

report.Design();
Какие еще моменты нужно учесть при регистрации и вызове собственной функции?


Пример проекта прикрепляют. Прикрепить видео пример не могу: "расширение swf запрещено администратором"
Вложения
TestStimulsoftFunc.zip
(35.24 КБ) 200 скачиваний
Stimulsoft 2014.1.1900.0 Winforms / Windows 7 / Visual Studio 2012 UP4
Ivan
Сообщения: 641
Зарегистрирован: 10 авг 2006, 05:40
Откуда: Stimulsoft Office

Re: Пользовательские функции

Сообщение Ivan »

Здравствуйте.
kavit писал(а):Получилось зарегистрировать функцию, но при открытии "Просмотра" в "Дизайнере", "Дизайнер" подвисает и ничего не показывает.
Проблема решена.
Патч будет включен в следующий предрелизный билд в пятницу.

Также вам надо сделать вашу функцию статической, т.е.

Код: Выделить всё

public static string MyConvert(int value)
        {
            return "Ex: " + value;
        }
Если не хотите ждать следующего билда, то в своём коде при вызове метода AddFunction замените имя группы на имя функции:

Код: Выделить всё

StiFunctions.AddFunction(
    "User", 
    "MyConvert",    // <---
    "MyConvert", 
    "Пользовательская функция", 
    typeOfFunction, 
    returnType,
    "Строка с приставкой 'Ex: '",
    argumentTypes,
    argumentNames,
    argumentDescriptions
);
Спасибо.
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Пользовательские функции

Сообщение HighAley »

Здравствуйте.

Ваша функция должны быть статической.
Ещё мы поправили небольшой баг. На данный момент название группы должно быть такое же как и название функции.
Данный баг уже исправлен. Исправление будет доступно в нашем следующем предрелизном билде.

Спасибо.
Ответить