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

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 .NET FastReport FastReport
8 сентября 2026

Ответы на популярные вопросы о формате FP3

Разбираем 11 частых вопросов о формате FP3: что это за файлы, чем отличаются от FR3, какие программы их открывают и как конвертировать в PDF.
30 июля 2026

Как из FastReport .NET экспортировать отчет в PostScript

В этой статье мы на простом примере рассмотрим экспорт отчета FastReport .NET в формат PostScript, разобрав настройку параметров и программную реализацию.
10 июля 2026

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

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

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