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

    22 апреля 2021 г.

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

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

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

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

    Подробнее
  • Как фильтровать даты в отчете с помощью диалоговой формы

    16 ноября 2019 г.

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

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

    23 марта 2022 г.

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

    Подробнее
  • Как создать собственный итог в матрице FastReport .NET

    8 октября 2018 г.

    Объект Матрица в FastReport .NET очень хорошо выполняет типовые задачи по отображению сводных таблиц. Но,

    Подробнее

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

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 Filtering Matrix

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

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

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