Работа с Data Sources в коде отчета в классе Reportscript
CouRage
Санкт-Петербург
Мне необходимо в коде отчета обратится к одному из источников данных отчета (Data Sources), сделать в нем поиск по одному из полей или пофильтровать его.
Как это лучше делать ?
Пробовал через Report.Dictionary.FindByName(<tablename>) и Report.GetDataSource(<tablename>). Оба метода возвращают TableDataSource. Как в нем искать и как его фильтровать пока не понял. Как через него получить ссылку на DataTable Тоже непонятно.
Как это лучше делать ?
Пробовал через Report.Dictionary.FindByName(<tablename>) и Report.GetDataSource(<tablename>). Оба метода возвращают TableDataSource. Как в нем искать и как его фильтровать пока не понял. Как через него получить ссылку на DataTable Тоже непонятно.
Комментарии
Искать можно так:
Фильтр для источника данных надо устанавливать в бэнде "Данные".
Итерирование - это как-то не самый (совсем не) эффективный способ обработки данных.
А если источник большой ?
А если нужно отсортировать данные ?
Для каждого источника, который нужно отфильтровать и обработать, создавать бэнд ? Как то это не очень (очень не) удобно.
Вот если бы можно было из TableDataSource получить DataView. Там есть и RowFilter, и Sort.
public void Init(string filter, SortCollection sort)
Фильтр - это выражение FastReport, ничего общего с фильтром RowFilter не имеет.
Если и это неудобно, используйте TableDataSource.Table - это DataTable.
Я делаю так Это не очень удобно, т.к. такая конструкция возвращает object и нужно каждый раз преобразовывать данные.
Удобнее всего было бы прямое обращение к источникам в словаре данных отчета. Например, в DataSources есть таблица MyTable и в коде обращаться так:
((String)Report.GetColumnValue("Products.ProductName"))