0

У меня есть приложение Winforms, которое использует элемент управления ReportViewer для отображения отчетов SSRS. У меня есть один отчет со многими параметрами, которые должны быть установлены пользователем. Я специально установил для одного из параметров значение по умолчанию, чтобы подсказки параметров отображались в средстве просмотра отчетов до запуска отчета.Проблема с параметром SSRS с ReportViewer

Однако, когда отчет просмотра отображает, то подсказки параметров не отображаются и читает сообщение,

Этот отчет требует по умолчанию или определенное пользователем значение для параметра отчета 'ReservationStatus. Чтобы запустить или подписаться на этот отчет, вы должны указать значение параметра.

Если я сделаю ReportViewer.RefreshReport(), отобразится запрос. Тем не менее, я не хочу называть это, потому что я также вызываю метод ReportViewer.SetDisplayMode(), чтобы поместить его в режим печати. Этот метод якобы вызывает метод RefreshReport().

Кроме того, кнопка «Show/Hide Parameter» неактивна при первой форме. Если я нажму кнопку «Обновить», кнопка параметра будет включена. Это если зритель не подбирает параметры до тех пор, пока не будет вызвано обновление.

Может кто-нибудь объяснить, почему у меня не может показаться, что у вас есть только запрос на просмотр параметров, а затем попробуйте обновить/запустить отчет?

+0

Используете ли вы сервер отчетов или локальный рендеринг? Я знаю, что элемент управления ASP.NET Reportviewer показывает параметры только при использовании сервера отчетов. –

+0

Он использует сервер отчетов, но это элемент управления представлением отчетов форм Windows, а не элемент управления ASP.NET. – NYSystemsAnalyst

+0

@Vince: Нет, я никогда не нашел для этого решения. В итоге я просто вызвал RefreshReport() вместо SetDisplayMode(). – NYSystemsAnalyst

ответ

0

Установка свойства ReportViewer.Messages в элементе управления отчета приводит к обновлению панели параметров. Я был в состоянии заменить RefreshReport с этим:

ReportViewer.Messages = ReportViewer.Messages 

Поездка в .NET Reflector объясняет, почему:

  • ReportViewer.Messages называет rsParams.ApplyCustomResources
  • rsParams.ApplyCustomResources звонки rsParams.EnsureParamsLoaded

Единственный другой метод, который вызывает rsParams.EnsureParamsLoaded, - RefreshReport. И метод Private, поэтому нет никакой надежды использовать наследование. Настройка сообщений для себя, хотя и очень хоккей, является единственным обходным решением, которое я могу найти.

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