logo
small logo
  • Продукты
  • Купить
  • Поддержка
  • Статьи
  • Клиентская панель Поддержка
  • Главная
  • /
  • Статьи
  • /
  • Как предварительно зарегистрировать источник данных перед созданием нового отчета
  • Работа с NuGet пакетами FastReport

    22 ноября 2021 г.

    UPD: Актуально до версии FastReport .NET 2022.2. Теперь лицензионные пакеты доступны на нашем NuGet-сервере.

    Подробнее
  • Семейство генераторов отчетов FastReport - быстрый обзор

    23 марта 2020 г.

    Отчетность – без нее невозможно вести деятельность ни в одной сфере жизнедеятельности. Бюрократия является неодолимой

    Подробнее
  • Как создать Master-Detail отчет из несвязанных таблиц

    27 марта 2017 г.

    Нередко появляется необходимость в создании отчета типа «Главный – Подчиненный» или «Master – Detail». Это

    Подробнее
  • Как распечатать несколько раз одну страницу отчета

    24 февраля 2022 г.

    Если вам нужно распечатать отдельные страницы отчета в нескольких экземплярах, то придется прибегнуть к

    Подробнее
  • Подключение к базе данных SQLite внутри отчета

    17 августа 2017 г.

    В этой статье я бы хотел рассмотреть подключение к базе данных SQLite внутри отчета. Мы

    Подробнее

Как предварительно зарегистрировать источник данных перед созданием нового отчета

11 июля 2016 г.

Чтобы передать источник данных в отчет, его необходимо предварительно зарегистрировать в отчете. Затем уже в самом отчете надо выбрать доступный источник из списка, и только после этого приступать к работе. Было бы здорово, чтобы источник данных был доступен сразу, стоит лишь открыть дизайнер отчета. А еще лучше, если в дизайнере отчета он будет уже выбран. Приступать к разработке отчета можно немедленно, не заботясь о данных.

Такой подход позволит избежать рутинной работы при массовой разработке отчетов.

Сделать регистрацию источника данных и автоматический его выбор в отчете при запуске дизайнера – задача не сложная. Основная проблема - сохранять зарегистрированный источник данных при создании нового отчета при помощи меню Файл.

Суть способа, который я хочу представить – перехватывать процесс создания нового отчета при использовании меню Файл.

Итак, рассмотрим все на примере. Создаем приложение с формой и одной кнопкой.

Для работы потребуются библиотеки:

1
2
3
4
5
using FastReport;
using FastReport.Utils;
using FastReport.Data;
using FastReport.Design;
using FastReport.Wizards;

 Объявляем источник данных и создаем его:

1
2
3
4
5
6
7
private DataSet FDataSet;
 
private void CreateDataSource()
 {
 FDataSet = new DataSet(); 
 FDataSet.ReadXml(Environment.CurrentDirectory + "//nwind.xml");
 }

 В данном случае, использовал базу данных XML из поставки FastReport .Net.

Создаем метод регистрации источника данных: 

1
2
3
4
5
6
7
8
9
private void RegisterData(Report FReport)
 {
 FReport.RegisterData(FDataSet, "NorthWind");
 // activate all data sources by default
 foreach (DataSourceBase source in FReport.Dictionary.DataSources)
 {
 source.Enabled = true;
 }
 }

 Здесь интересен цикл, который проходит по всем источникам данных, зарегистрированным в отчете, и активирует их. Таким образом, они будут сразу доступны в окне данных.

Вызываем обработчик события запуска дизайнера отчета:

1
2
3
4
private void DesignerSettings_DesignerLoaded(object sender, EventArgs e)
 {
 (sender as Designer).cmdNew.CustomAction += new EventHandler(cmdNew_CustomAction);
 }

 Добавляем пользовательский обработчик для события создания нового отчета через меню Файл.

Теперь нужно написать этот пользовательский обработчик. Он будет создавать новый пустой отчет с уже добавленным источником данных:

1
2
3
4
5
6
7
8
9
10
11
 void cmdNew_CustomAction(object sender, EventArgs e)
 {
 Designer designer = sender as Designer;
 //StandardReportWizard wizard = new StandardReportWizard(); // you can use any wizard form package
 BlankReportWizard wizard = new BlankReportWizard();
 wizard.Run(designer);
 
 RegisterData(designer.Report);
 // refresh data tree view
 designer.SetModified(this, "EditData");
 }

 Здесь мы создаем экземпляр объекта пустого отчета, либо запускаем «Мастер создания стандартного отчета», на выбор. Затем открываем новый отчет в дизайнере. Повторно регистрируем источник данных и обновляем список в дереве данных.

Осталось написать обработчик нажатия кнопки:    

1
2
3
4
5
6
7
8
9
10
private void button1_Click(object sender, EventArgs e)
 {
 Report FReport = new Report();
 Config.DesignerSettings.DesignerLoaded += DesignerSettings_DesignerLoaded;
 CreateDataSource();
 
 // FReport.Load("myreport.frx"); // load report
 RegisterData(FReport); // register data before design
 FReport.Design();
 }

 Создаем экземпляр объекта отчета. Присваиваем обработчик загрузки дизайнера отчетов, который мы написали, вместо стандартного. Создаем источник данных. Теперь можно загрузить отчет, либо не делать этого. Тогда будет создан пустой. Обязательно перед вызовом дизайнера регистрируем данные.

Теперь при запуске дизайнера таблицы базы данных будут сразу отображаться в окне «Данные». Также и при создании нового отчета через меню Файл, источник данных будет добавлен.

В этой статье я показал, как перехватить процесс создания нового отчета, если создавать его через меню Файл. По такому же принципу можно перекрыть другие действия дизайнера, такие как Save.

avatar
Dmitriy Fedyashov
Технический писатель
Fast Reports Team: Dmitriy Fedyashov - Technical Writer at Fast Reports
.NET FastReport Data Source Report

Добавить комментарий
logo
  • +7(800)551-75-80
  • info@fastreport.ru
  • Ростов-на-Дону, Россия, 344082, ул.Обороны 24, офис 311
  • Купить
  • Загрузить
  • Документация
  • Отзывы
  • Как деинсталировать
  • Онлайн поддержка
  • FAQ
  • Видео уроки
  • Форум
  • Статьи
  • Наши Новости
  • Пресса о нас
  • Реселлеры
  • Нестандартное лицензирование
  • ВУЗам
  • Карьера
  • Контакты

© 1998-2022 ООО «Фаст Репортс»

  • Согласие с обработкой персональных данных
  • Не является публичной офертой