Создание параметра своего типа

alogicmanalogicman Екатеринбург
отредактировано 14:23 Раздел: FastReport .NET
Доброго времени суток!

Такая задача.
Допустим у меня есть простой класс:
public class ReportModel
{
    public int Number { get; set; }
    public DateTime Date { get; set; }
    public string Name { get; set; }
}

Можно ли как-то создать параметр отчета, например, Model (только как указать нужный тип?), чтобы затем в отчете использовать его как:
[Model.Number]
[Model.Date]
[Model.Name]?

Пробовал делать что-то вроде:
ReportModel model = new ReportModel { Number = 5, Date = DateTime.Now, Name = "Name1" };
report.SetParameterValue("Model", model);
но это не проканало: возникает исключение CompilerException("The name 'Model' does not exist in the current context").

Очень хочется использовать свою модель, а не дублировать свойства модели в параметры отчета.

Комментарии

  • отредактировано 14:23
    Нужно добавить в отчет ссылку на сборку. И писать надо [[Model].Name].
  • alogicmanalogicman Екатеринбург
    отредактировано 14:23
    kirchhoff написал: »
    Нужно добавить в отчет ссылку на сборку. И писать надо [[Model].Name].

    Хорошо. Кажется мне это подходит. Только возникла проблема с подключением сборки:
    Указал ссылку на сборку. Тут где-то читал, что достаточно, чтобы сборка лежала рядом с dll-ками FastReport'а. У меня так и есть, но возникает исключение:
    The type or namespace name 'ReportModel' could not be found (are you missing a using directive or an assembly reference?)

    Что может быть не так?
    Есть ли возможность как-нибудь программно зарегистрировать сборку?
  • отредактировано 14:23
    В дизайнере Report>Options>Script>Add...
    Это сделал?
  • alogicmanalogicman Екатеринбург
    отредактировано 14:23
    Да, сделал.
    Может еще где-то что-то указать надо?

    Еще уточню, что у меня ReportModel лежит как раз сборке (myapp.exe), которая запускает отчет. Ее я указываю в ссылках на сборки:
    System.dll
    System.Drawing.dll
    System.Windows.Forms.dll
    System.Data.dll
    System.Xml.dll
    myapp.exe
    
  • alogicmanalogicman Екатеринбург
    отредактировано 14:23
    Получилось.
    Добавил пространство имен в скрипте:
    ...
    using FastReport.Table;
    using FastReport.Utils;
    using MyApp.PrintModels; // вот здесь
    
    namespace FastReport
    {
      public class ReportScript
      {
      }
    }
    

    Огромное спасибо за помощь!

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.