привязать коллекцию дозвуковых объектов к отчету Microsoft (rdlc) - PullRequest
0 голосов
/ 01 мая 2009

Кто-нибудь смог использовать созданную SubSonic коллекцию как «источник данных бизнес-объектов» с отчетом Microsoft (rdlc)? Я сгенерировал код класса SubSonic, но по какой-то причине окно источника данных отчета не рассматривает класс как потенциальный источник данных коллекции объектов.

Мне нужно что-то сделать, чтобы это сработало?

Заранее спасибо ... vsdotnetguy

Ответы [ 3 ]

0 голосов
/ 01 мая 2009

Да, я сделал это, вам нужно только убедиться, что проект, содержащий ваши отчеты, ссылается на ваш проект SubSonic (очевидно :).

Иногда я также обнаружил, что Visual Studio может немного испортиться и потребовать перезагрузки перед повторным заполнением окна источника данных сгенерированными SubSonic объектами.

0 голосов
/ 04 июня 2009

Спасибо Крису и Адаму,

Вот ответ, который я нашел.

В моем случае я хотел динамически устанавливать основной и подотчетный источники данных во время выполнения, используя коллекции объектов SubSonic. Однако я также хотел спроектировать макет отчета с помощью перетаскивания столбцов источника данных.

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

Однако позже, когда я выполнял привязку какого-либо элемента управления с помощью элемента управления ObjectDataSource, я заметил, что СЕЙЧАС мои ​​коллекции SubSonic отображаются в окне источников данных веб-сайта, и я могу перетаскивать макет отчета.

Таким образом, если вы динамически устанавливаете источники данных отчета во время выполнения и НЕ используете элемент управления ObjectDataSource уже в своем проекте, вы ДОЛЖНЫ добавить фиктивный элемент управления ObjectDataSource на одну из ваших страниц aspx. После этого источники данных бизнес-объектов будут отображаться в конструкторе отчетов.

0 голосов
/ 01 мая 2009

Ранее я загружал отчеты Reporting Service из бизнес-объектов (загружается через NHibernate - что не совсем точно, но достаточно близко для аргументации).

Пара ключевых моментов: 1. вернуть ваши объекты в список, даже если вы возвращаете только один объект. 2. Вы хотите бизнес-объекты FLAT. Возможно, вам придется пройти через преобразование DTO, чтобы получить это. Под плоской я имею в виду наиболее сложное свойство, которое вы можете иметь в бизнес-объекте, это строка и число (int, decimal, double). Если вы ожидаете получить значение, подобное этому: myObject.Customer.Name, забудьте об этом. Создайте свойство CustomerName. 3. Если вам нужны данные из разных мест, попробуйте разбить ваши отчеты на подотчеты. Вы отключаете ключ источника данных, чтобы выяснить, какие данные следует возвращать в отчет.

Я добавлю больше, как я помню, прошло несколько месяцев с тех пор, как я это сделал.

...