2009-12-11 2 views
4

Ситуация: Мы разработали красивую страницу отчета с использованием .NET ReportViewer (ASP.NET, RDLC) с пользовательским объектом из нашей объектной модели. Моим базовым (и, возможно, неверным) было предположение, что если бы мы связали коллекцию пользовательских объектов с ReportViewer/RDLC, элемент управления будет строить заполненный макет отчета для каждого объекта в коллекции.Возможности .NET ReportViewer: отображение нескольких строк

Мой опыт работы с прошлым был с механизмом отчета MS-Access, где привязка источника данных к отчету приведет к тому, что макет отчета будет применен для в каждой записи в источнике данных. Если макет отчета охватывает всю страницу, например, для каждой связанной записи будет создана страница с заполненным отчетом.

Вопрос: Мой коллега говорит мне, что .NET ReportViewer не может функционировать так, как я описываю. В самом деле? Пожалуйста, скажите мне, что он ошибается? Любые рекомендации по решению или обходу?

Спасибо заранее, -JR

Примечание: Оригинальное название вопроса изменено в ответ на разъяснение ответа.

ответ

4

Короткий ответ: Да. ReportViewer может вести себя так, как вы описываете. (Ваш коллега неверен.)

Существует несколько подходов для отображения всех строк в источнике данных, а не только первого. Я больше всего знаком с подходом List Control, который описан здесь, но также существует подход Master-Detail с использованием либо подрегистров, либо областей вложенных данных.

Строго говоря, этот вопрос составляет около , отображающий несколько строк данных, а не коллекции пользовательских объектов. Возможно, вы захотите изменить заголовок вопроса из «Возможности .NET ReportViewer: привязка к пользовательским коллекциям объектов», чтобы сказать «Возможности .NET ReportViewer: Отображение нескольких строк»?

При разработке отчета, если вы поместите поле из источника данных в конструктор отчетов и отобразите отчет, вы заметили, что отображается только одна строка, а не весь набор данных. При ближайшем рассмотрении ReportDesigner обернул агрегированную функцию First() вокруг вашего поля данных. Это поведение по умолчанию для ReportViewer.

Что вы хотите сделать, это использовать элемент управления List и поместить в него элементы управления данными. Теперь будут показаны все строки полей. Это так просто.

Список является важным компонентом успешного использования ReportViewer. Прочитайте это. Список может справиться с большей сложностью, используя возможности Group Expression, а также вложенные в него элементы управления List/Table.

Ресурсы:

Как уже упоминалось в другой должности, один из лучших веб-ресурсов для ReportViewer является GotReportViewer сайт. Там вы найдете дополнительную информацию об использовании List, Master-Detail и других.

Удачи.

Смежные вопросы