Если вам не нужны расширенные функции, такие как детализация, и вы не можете использовать VS2010, вы можете сделать этот хак (что я и делаю):
- установить новый reportviewer.exe из VS2010 (я думаю, бета2 или новее);
- добавить общие / WebForms сборки ReportViewer версии 10.0 к ссылкам;
- ручной анализ структуры XML RDL для получения источника данных и / или запроса SQL (очень просто);
- используйте это для заполнения LocalReport.DataSource;
- Делать LocalReport.Render ("PDF") для получения вывода PDF (код ActionResult для генерации ответа PDF легко найти);
- поставить кнопку «Просмотр» на странице и iframe;
- Кнопка «Просмотр» (через JavaScript) назначит атрибут iframe src URL-адресу, который возвращает вышеуказанное содержимое PDF, - и обеспечит хороший предварительный просмотр отчета в формате iframe в формате PDF;
- альтернативно, можно использовать плагин jQuery Media для рендеринга тега объекта PDF с такими же результатами;
- Кроме того, я анализирую параметры XML RDL, показываю их на странице и передаю их по URL-адресу «Сгенерировать отчет» - в качестве преимущества я получаю собственные приятные элементы управления пользовательским интерфейсом;
- Кроме того, у меня есть собственные кнопки «экспорта», которые вызывают LocalReport.Render (формат) и обеспечивают вывод с правильным типом MIME (это Excel, Word, PDF и мой CSV-файл в ручном режиме) - улучшен экспорт в новой версии средство просмотра отчетов.
Приведенный выше список может показаться пугающим, но мне понадобилось всего 2 дня, чтобы взломать полное решение в ASP.NET MVC, и это всего ~ 300 строк кода, включая мое собственное поколение CSV.
Код для привязки данных становится очень простым, когда вы получаете DataTable / DataSet (из запросов XML):
var reportDataSource = new ReportDataSource();
reportDataSource.Name = name;
reportDataSource.Value = ds.Tables[0];
localreport.DataSources.Add(reportDataSource);