Как добавить поле с данными в строку матрицы

08.10.2018

В этой статье мы рассмотрим, как создать динамическую матрицу, заполняемую из кода скрипта отчета. Особенность этой матрицы в том, что помимо данных добавляемых из скрипта, мы вставим поле данных в ячейку отчета, с помощью текстового объекта.

Предположим, вы создаете матрицу с переменным количеством столбцов, которые будут добавляться в зависимости от каких-либо условий, но часть данных у вас статична. Они всегда заполняются. Было бы неплохо просто поместить эти поля данных просто в матрицу, а остальные ячейки пусть заполняются из кода. Несмотря на то, что заполнение матрицы данными предусматривается только двумя способами (из кода или автоматически, полями данных) мы совместим их.

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

Давайте рассмотрим на примере.

Создадим отчет и добавим матрицу на бэнд «Данные». Подключим источник данных – демонстрационная база данных из поставки, таблица Employees.

Шаблон матрицы выглядит так:

В ячейку со значением 2, мы добавили текстовый объект. В нем выбираем поле Employees.LastName. Это именно то «статическое» поле о котором мы говорили выше.

Создаем обработчик события AfterData для матрицы.

1
2
3
4
5
6
7
8
9
10
11
12
13
private void Matrix1_AfterData(object sender, EventArgs e)
 {
 DataSourceBase rowData = Report.GetDataSource("Employees"); // получаем источник данных Employees.
 Matrix1.DataSource = rowData; // присваиваем его свойству DataSource матрицы
 
 rowData.Init(); //инициализируем источник данных
 // перебираем все записи источника данных
 while (rowData.HasMoreRows)
 { 
 Matrix1.Data.AddValue(new Object[] {"Phone" }, new Object[] { (string)Report.GetColumnValue("Employees.City"), (string)Report.GetColumnValue("Employees.FirstName")}, new Object[] {(string)Report.GetColumnValue("Employees.HomePhone") }, Report.GetDataSource("Employees").CurrentRowNo); //добавляем очередную запись
 rowData.Next(); //получить следующую запись
 }
 }

Из комментариев понятно, что при добавлении строки данных, мы определяем заголовок Phone. Затем вставляем данные по порядку: город, имя и телефон. А также, мы должны передать номер строки данных, чтобы вставить фамилию из текущей записи данных.

Теперь запустим отчет:

 

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

.NET FastReport .NET FastReport
10 июля 2026

Как настроить Content Security Policy для отчетов FastReport .NET WEB

Узнайте, как настроить Content Security Policy для отчётов FastReport .NET WEB: обзор директив и значений CSP, изменения в архитектуре FastReport, типичные сценарии обхода и способы защиты.
22 июня 2026

Как настроить отчет с Business Objects из кода и дизайнера в FastReport .NET

В этой статье рассматривается реальный пример создания и использования шаблона отчета .frx для подключения к иерархическим бизнес-объектам в FastReport .NET.
21 апреля 2026

Использование водяных знаков в FastReport VCL

В статье подробно рассмотрели функционал добавления водяных знаков в FastReport VCL — как через визуальный интерфейс, так и программно, с помощью кода на Delphi и в скриптах отчётов.

Не является публичной офертой
© 1998-2026 ООО «Быстрые отчеты»