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

    22 апреля 2021 г.

    Статья актуальна до версии 2022.1. В FastReport.NET есть прекрасный инструмент для вывода данных в виде сводной

    Подробнее
  • Новые возможности и сравнения объектов Matrix и AdvancedMatrix

    23 марта 2022 г.

    Совсем недавно в FastReport .NET появился объект AdvancedMatrix. В этой статье мы рассмотрим структуру

    Подробнее
  • Создание сложного отчёта с несколькими матрицами в FastReport .NET

    16 июня 2021 г.

    Сегодня мы рассмотрим непростой отчёт с бэнд-ориентированным подходом, который обычно используется в FastReport. Например, отчет

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

    30 июня 2021 г.

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

    Подробнее
  • Как сделать сквозную сортировку подобных матриц на нескольких страницах в FastReport .NET

    22 сентября 2021 г.

    Допустим поставлена задача: отсортировать матрицу на первой странице в нужном порядке. А ещё запомнить этот

    Подробнее

Как фильтровать построенную матрицу

23 июня 2021 г.

В FastReport объект Матрица позволяет нам отфильтровать данные. Это одна из самых востребованных функциональных возможностей и многих пользователей она вполне устраивает. Однако есть случаи, когда фильтрация исходных данных не подходит.

Давайте рассмотрим матрицу ниже.

Исходная матрица

Как вы видите - это статистика продаж по сотрудникам за 5 лет. Для сотрудника Steven Buchanan нет статистики за 2011, 2012 и 2015 годы. Это означает, что если мы отфильтруем матрицу по годам и исключим 2013 и 2014 годы, то Steven пропадет из матрицы.

Для сохранения полноты картины нужно учитывать всех сотрудников, даже если у него не было продаж за отчетный период. В таком случае вам придется использовать один из вариантов:

1) искусственно обогащать сырые данные нулевыми значениями для каждого года, в котором у сотрудника не было продаж;
2) фильтровать уже построенную матрицу путем удаления ненужных колонок.

В шаблоне отчета:

Шаблон отчёта

Для ячейки Year добавим событие BeforePrint:

Для ячейки Year добавляем событие BeforePrint

Со следующим кодом:

private int index = 1;
 private List<int> removeColumns = new List<int>();
 
 private void Cell4_BeforePrint(object sender, EventArgs e)
 { 
 if (new List<int>(){2013, 2014}.Contains((int)Cell4.Value))
 {
 removeColumns.Add(index); 
 }
 index++; 
 }

Здесь мы записали индексы колонок, которые хотим удалить. Теперь, для матрицы создадим обработчик события ModifyResult для редактирования уже построенного объекта “матрица”:

 private void Matrix1_ModifyResult(object sender, EventArgs e)
 {
 removeColumns.Reverse();
 foreach (int del in removeColumns)
 { 
 Matrix1.ResultTable.Columns.RemoveAt(del);
 }
 }

Так как при удалении колонок или строк, индекс всех последующих смещается, то нужно удалять с конца - с самого большого индекса. Поэтому был выстроен список индексов для удаления в обратном порядке с помощью метода Reverse(). Далее просто удалили колонки по соответствующим индексам. Давайте посмотрим, что получилось в итоге:

Итоговая таблица

Из матрицы пропали столбцы для 2013 и 2014 годов, но сотрудник Steven Buchanan остался. Желаемый эффект достигнут! Также, можно удалять ненужные вам строки воспользовавшись другой коллекцией -  Matrix1.ResultTable.Rows. Теперь вы знаете, как фильтровать матрицу, если фильтрация данных не подходит.

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

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

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

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