Как фильтровать данные в отчете RDLC?

Я новичок в отчетах RDLC в Visual Studio 2010.
Я работаю над веб-сайтом, в этом я использовал функцию отчетов VS2010. Я использую ReportViewer, чтобы показать Report1.rdlc. Он это прекрасно показывает. Теперь мое требование - фильтровать данные в отчете во время выполнения. Я просматриваю этот вопрос, но не могу понять его ответ.< br/>Потому что Report1.rdlc недоступен в исходном коде.

Теперь, как я могу фильтровать данные отчета во время выполнения?


person jams    schedule 24.03.2012    source источник


Ответы (2)


Конечно, вы назначаете набор данных отчету rdlc, и на странице вашего средства просмотра отчетов вы будете использовать объектный источник данных (и, следовательно, набор данных XSD с таблицами данных), который инкапсулирует запрос.

В запросе, естественно, есть предложение where, в которое вы вставляете свои параметры для фильтрации данных, например:

WHERE (Table.Field = @Param OR @Param = A_Default_Value)

Теперь перед вызовом отчета добавьте на страницу элементы управления, которые вам нравятся (раскрывающиеся списки, текстовые поля и т. д.). Эти элементы управления фильтруют источник данных Object, который сопоставляется с набором данных в отчете rdlc, и, таким образом, отчет будет быть отфильтрованным при нажатии на определенную кнопку, например Показать отчет, чтобы обновить источники данных объекта (привязать их к данным) и повторно отобразить отчет в средстве просмотра отчетов.

Вы можете присвоить значения элементов управления фильтрацией параметрам в rdlc, чтобы вы могли отображать параметры отчета в его заголовке при его создании:

Parameters!ParameterName.Value

Надеюсь, это поможет вам.

person Jabro    schedule 17.06.2016

Как вы получаете данные с сервера и т. д. Привязываетесь ли вы к результату с данными? Если это так, вы можете просто применить фильтр при извлечении данных для начала, чтобы вам не нужно было делать что-то особенное в фактическом отчете.

Согласно вашим отзывам, если вы получаете DataTable, применение фильтра должно быть простым, например

DataTable oDT = YourSQLCommandToGetData();
oDT.DefaultView.RowFilter = "SomeColumn = x and OtherColumn = y";

А затем запустите свой отчет. Если вы хотите перейти на другой уровень и УБЕДИТЬСЯ, что у вас нет нежелательных записей, вы даже можете сделать что-то вроде

DataTable oNewFilteredResult = oDT.DefaultView.ToTable();

Затем вы можете назначить НОВУЮ таблицу для вызова RDLC.

person DRapp    schedule 24.03.2012
comment
Да, я привязываюсь к таблице данных, но мастер не дает никаких вариантов запроса. Это только спрашивает имя таблицы. Я использую SQL Server. - person jams; 25.03.2012