logo
small logo
  • Продукты
  • Купить
  • Поддержка
  • О нас
  • Клиентская панель Поддержка
  • Главная
  • /
  • Статьи
  • /
  • Интерактивный отчёт с предварительным вводом данных в таблицу
  • Как сделать чек из программы WPF

    17 августа 2020 г.

    Я думаю каждый разработчик WinForms сталкивался с мыслью, что стандартные элементы управления формами выглядят слишком

    Подробнее
  • Как сделать интерактивный отчет с детальной страницей в FastReport VCL 5

    15 октября 2017 г.

    В FastReport VCL 5 появилось много нововведений. Одно из них - новые опции гиперссылки. Теперь

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

    29 апреля 2020 г.

    Многим пользователям генераторов отчетов достаточно штатной функциональности в повседневной работе. Но порой им приходится сталкиваться

    Подробнее
  • Использование линейки в RichText для FastReport .NET

    16 марта 2022 г.

    В редактор RichText была добавлена линейка. Она позволяет пользователям управлять шириной табуляции и задавать

    Подробнее
  • Кастомизация дизайнера отчетов

    31 мая 2020 г.

    Дизайнер отчетов изобилует большим количеством функциональных возможностей, которые многие пользователи не используют. Иногда многообразие иконок

    Подробнее

Интерактивный отчёт с предварительным вводом данных в таблицу

4 апреля 2022 г.

Интерактивный отчёт с предварительным вводом данных в таблицу

Как вы уже знаете, отчеты FastReport .NET могут иметь диалоговые формы, которые выводятся перед построением отчета. Благодаря им вы можете задавать некие текстовые, булевые или числовые переменные. Это могут быть текстовые поля, таблицы, списки, выпадающие списки, даты, чекбоксы и даже списки с чекбоксами.

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

Рассмотрим случай, когда вам нужно перед отображением отчета ввести для него данные. Это достаточно простой кейс, если речь идет об отдельных текстовых полях, чекбоксах, списках. Но что, если у вас есть таблица с данными, и вы хотите иметь возможность скорректировать эти данные вручную до построения отчета?

Тут нам на помощь придет компонент Grid Grid . Это таблица с данными, которую мы можем показать на диалоговой форме перед построением отчета.

Добавим в отчет диалоговую форму и разместим на ней контрол Grid. Вызовем контекстное меню для него с помощью правого клика:

Контекстное меню контрола Grid

Выберите “Edit Collumns…” , чтобы добавить колонки в таблицу.

Окно редактирования колонок в контроле Grid

В окне редактирования колонок добавляем три - Name, Address, Phone. Обратите внимание на свойство Customers.Name. Тут мы ссылаемся на некий источник данных Customers, которого еще нет в отчете. Но мы его добавим позже, с помощью скрипта. Для остальных колонок нужно задать соответствующие свойства.

Шаблон страницы отчета крайне прост - лишь один объект Table с тремя колонками. Заполнять мы его будем в скрипте отчета.

Шаблон отчета для вывода данных из диалоговой формы

А теперь, давайте добавим обработчик события StartReport для отчета:

Инспектор свойств для объекта Report

Скрипт отчета:

public class ReportScript
 {
 //Структура данных для таблицы
 public class Customer 
 {
 public string Name {get; set; }
 public string Address {get; set; }
 public string Phone {get; set; }
 
 public Customer(string name, string address, string phone)
 {
 Name = name;
 Address = address;
 Phone = phone;
 }
 }
 
 private void _StartReport(object sender, EventArgs e)
 {
 //Список пользователей
 List<Customer> customers = new List<Customer>();
 //Заполняем список пользователей данными по умолчанию
 customers.Add(new Customer("Kevin Smith", "221 52nd st, Brooklyn, NY, United States", "+12127599755"));
 customers.Add(new Customer("Justin Ford", "1556 Broadway, suite 416, NY, United States", "+12145678900"));
 customers.Add(new Customer("Amanda Stephenson", "455 Larkspur Dr., CA, United States", "+14105175379"));
 //Регистрируем источник данных в отчете
 Report.RegisterData(customers, "Customers"); 
 //Задаем источник данных в таблице
 Grid1.DataSource = Report.GetDataSource("Customers");
 //Задаем поля в ячейках
 Cell6.Text = "[Customers.Name]";
 Cell7.Text = "[Customers.Address]";
 Cell8.Text = "[Customers.Phone]";
 }
}

В данном случае мы задаем структуру данных Customer, которая будет использоваться для вывода строк в таблице в диалоговом окне и в отчете. Далее мы создаем источник данных Customers и заполняем ее экземплярами Customer. Затем регистрируем полученный источник данных в отчете. Помните, как мы задавали поле данных для колонок в объекте Grid? Именно на этот источник данных мы и ссылались. Тут же мы назначаем поля из источника ячейкам таблицы (объект Table) в шаблоне страницы.

Теперь, для объекта Table на странице отчета создадим обработчик события ManualBuild. Это событие вызывается после построения объекта на странице и позволяет изменять уже готовую к отображению таблицу. Таким образом, мы можем изменять текст в таблице с помощью скрипта.

Инспектор свойств объекта Table

 private void Table1_ManualBuild(object sender, EventArgs e)
 {
 //Задаем источник данных
 DataSourceBase rowData = Report.GetDataSource("Customers");
 //Инициализируем данные 
 rowData.Init();
 //Отображаем первую строку данных
 Table1.PrintRow(0);
 //Отображаем колонку
 Table1.PrintColumns();
 //Цикл по всем строкам данных в источник
 while (rowData.HasMoreRows)
 {
 //Выводим очередную строку данных
 Table1.PrintRow(1);
 //Выводим колонку
 Table1.PrintColumns();
 //берем следующую запись из источника
 rowData.Next();
 }
 }

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

Давайте запустим отчет. Первое, что мы увидим - диалоговое окно с таблицей:

Диалоговое окно с таблицей

Сделаем двойной клик по первой ячейке, чтобы отредактировать ее текст:

Редактирование первой ячейки

Нажмем OK и посмотрим на результат:

Результат работы программного кода

Как видите, наши дефолтные данные изменились на те, что мы ввели вручную. Таким образом, вы можете дать пользователям возможность изменять данные вручную перед построением отчета. В данном примере показано заполнение таблицы данными из скрипта, но ничего не мешает вам заполнять данными из источника.

О продукте Купить
avatar
Dmitriy Fedyashov
Технический писатель
Fast Reports Team: Dmitriy Fedyashov - Technical Writer at Fast Reports
.NET FastReport Interactivity Designer Script Report

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

© 1998-2023 ООО «Быстрые отчеты»

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