2009-05-19 2 views
6

Как интегрировать ReportViewer в asp.net MVC project?Reportviewer datasource в asp.net-mvc

Я хочу добавить бизнес-объекты MVCProject.Model namespace. ReportViewer позволяет создавать бизнес-объекты DataSet.

Можно ли выбрать другой источник данных, например LinqDataSource или Прямой объект для объектов класса LINQ to SQL?

Что было бы лучшим решением для добавления отчетов в проект MVC?

ответ

1

Это будет тяжело. Во-первых, вам нужна ViewState, поэтому вам нужно будет разместить отчет на обычной странице WebForms. Это не так уж плохо, потому что WebForms и MVC работают хорошо бок о бок.

Жесткая часть связывается с реальными объектами IEnumerable, а не с объектами ObjectDataSources.

Первым шагом является создание модели данных отчета. Вы можете сделать это в коде, с запросами, независимо от того, что вы хотите. Структура нечто подобное (но, очевидно, намного больше) является типичным:

public class ReportSource 
{ 
    public Floogle[] Floogles { get; set; } 
} 

public class Floogle 
{ 
    public Doodad[] Doodads { get; set; } 
    public string Text { get; set; } 
} 

public class Doodad 
{ 
    public int Number { get; set; } 
} 

Хитрость заключается в том, чтобы использовать элемент управления BindingSource в отчете и установите свойство DataSource в typeof(ReportSource) - да, источником данных является тип вашего модель отчета.

При разработке отчета вы не получите много богатства, но сможете это сделать.

Что касается сторонних решений для отчетности, мы нашли, что Telerik является лучшим вариантом.

+0

Где именно я использую этот BindingSource ?? – AndreMiranda

+0

Прежде всего, мне жаль, что вам нужно работать с этим ужасным инструментом. BindingSource - это «контроль», который вы можете «перетащить» на поверхность конструктора. –

+0

MVC не предназначен для управления перетаскиванием и перетаскиванием.Конечно, вы можете «взломать» их на работу с MVC (поскольку MVC все еще строится на той же основе, что и webforms), но он идет против парадигмы MVC, поэтому это не рекомендуется. Ответ Шираза хорош, если у вас есть существующие отчеты, которые вы должны использовать с MVC. –

2

Альтернативный способ сделать это - создать отчет на сервере отчетов, а затем передать его в приложение mvc в виде PDF.

0

У меня есть небольшой проект, который я выбрал на Codeplex, который представляет собой проект mvc с отчетом.

http://mvctaskmanagement.codeplex.com/

В принципе, так как я Дев на коробке XP, мой веб-форма должна была получить толкнул в отдельный проект. Поскольку у меня есть служебный слой proj, я застрял там.

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

Удачи вам!

2

У меня есть идея, которая не проверена, но может работать. 1- Разместить контроль над просмотром отчетов в стандартной веб-странице ASP.Net (например, ReportViewer.aspx) 2- Под вашим MVC добавьте iframe, ссылающийся на эту страницу ReportViewer.aspx 3- Пропустите параметры страницы, используя сеансы или строки запроса

Сообщите мне, если th работает

+0

Это моя текущая - ужасная идея. Я уверен, что это сработает, но я предпочел бы нечто более элегантное. – vbullinger