ASP.NET MVC VS2010 Crystal Reports Beta 2 не может печатать, экспортировать, масштабировать или изменять страницы - PullRequest
2 голосов
/ 11 октября 2010

Я только что обновился до бета-версии 2 Crystal Reports для Visual Studio 2010 и не могу печатать, экспортировать, масштабировать или изменять страницы при использовании веб-элемента управления в приложении ASP.NET MVC.

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

В VS2010 при просмотре .rpt я могу нажать «Предварительный просмотр отчета» и получить отчет для запуска и печати, экспорта, масштабирования и т. Д. Похоже, что для отображения отчета используется элемент управления Windows.не веб-контроль.Таким образом, я считаю, что сам файл моего отчета действителен.

При просмотре отчета в Crystal Reports Viewer на веб-странице я получаю различные функции при нажатии каждой из кнопок:

  • Печать: Нажмите кнопку печати один раз, отчет возвращается на веб-сервер, повторно запускает отчет, но затем возвращается на веб-страницу и ничего не делает.Нажмите ее еще раз, и она откроет новую вкладку с тем же отчетом на этой новой вкладке.
  • Экспорт: Экспорт откроет диалоговое окно с вопросом, в какой формат я хочу экспортировать.После того, как я сделал выбор, он выполняет те же функции, что и печать, переходит на задний план, и ничего.При повторном нажатии кнопки «Экспорт» открывается новая вкладка с отчетом.
  • Масштабирование / изменение страницы - обе эти опции всплывают с диалоговым окном, вращением, а затем замораживают страницу.

Я получаю одинаковое поведение независимо от того, какой браузер я использую (IE, Chrome, Mozilla), и во всех браузерах отключена блокировка всплывающих окон.

С помощью инструментов разработчика Chrome я делаюполучить две ошибки на странице:

  • JobHistory: 59 [HTML-код, вызвавший эту ошибку, был создан скриптом.] Обнаружено несоответствие.Игнорирование тега.
  • JobHistory: 59 [HTML-код, вызвавший эту ошибку, был создан скриптом.] Обнаружено несоответствие.Игнорирование тега.

Другие элементы, которые я пробовал:

  • Удалены все предыдущие версии Crystal Reports
  • Удалено, а затем повторно установлена ​​бета-версия 2 Crystal Reports.
  • Перезапустил мое решение с нуля, изначально это было обновление с 2008 года.
  • Кросс разместил этот вопрос на форумах Crystal Reports beta 2

Любые мысли или предложенияна вещи, которые я мог попробовать, очень ценятся.

1 Ответ

2 голосов
/ 22 октября 2010

Элемент управления Report Viewer Crystal Report - это серверный элемент управления, поэтому он не функционирует должным образом, когда является частью страницы просмотра MVC. Следовательно, когда я пытался распечатать или экспортировать, что вызвало обратную публикацию, я постоянно видел обновление страницы, а не печать или экспорт.

Это поведение отличается от версии 1 ASP.NET MVC, которую я использовал с Visual Studio 2008, и версии Crystal Reports, поставляемой с VS2008. В VS2010 и бета-версии Crystal Reports 2010 элемент управления Report Viewer должен находиться на простой старой странице aspx, а не на странице просмотра MVC.

Чтобы выполнить это, я предпринял следующие шаги, многие из этих шагов те же, которые я использовал ранее в связанном вопросе, но я настроил их для нового поведения, наблюдаемого в VS2010 и CrystalReports 2010: StackOverflow.com : Кнопки CrystalReportViewer не работают с использованием MVC Framework

  • В моем контроллере я вызываю правильные вызовы моей модели для получения данных моего отчета,

List<JobSummaryBody> body = model.GetJobSummaryBody(jobId, startDate, endDate);

  • Далее я создаю переменную для самого отчета, в данном случае:

JobSummaryByDate summary = new JobSummaryByDate();

Примечание. JobSummaryByDate - это тип данных, созданный Crystal Reports, когда я создаю свой отчет, это сгенерированный код. Думайте об этом как о всех данных, которые понадобятся вашему разработанному отчету.

  • Далее я устанавливаю источник данных, данные строки для только что созданного отчета

summary.SetDataSource(body);

  • Наконец, я сохраняю данные своего отчета в сеансе и делаю Response.Radirect на мою страницу aspx, которая содержит Crystal Reports Viewer

Session["ReportData"] = summary; Response.Redirect("~/CrystalReports/JobSummaryByDateView.aspx");

Примечание. Я создал новую папку верхнего уровня в своем проекте под названием «CrystalReports», к которой можно перейти по URL.

  • Исходная страница для JobSummaryByDateView.asp очень удобна, добавьте Crystal Report Viewer, в этом случае я дал ей идентификатор средства просмотра отчетов:

    <CR:CrystalReportViewer ID="ReportViewer" runat="server" AutoDataBind="true" EnableDatabaseLogonPrompt="False" EnableParameterPrompt="False" ToolPanelView="None" HasDrilldownTabs="False" HasDrillUpButton="False" HasSearchButton="False" HasToggleGroupTreeButton="False" HasToggleParameterPanelButton="False" ReuseParameterValuesOnRefresh="True" />

  • Наконец, в коде за страницей я установил ReportViewer.ReportSource для моих данных отчета, сгенерированных в моем контроллере:

protected void Page_Init(object sender, EventArgs e) { ReportViewer.ReportSource = Session["ReportData"]; }

...