Параметры SSRS ServerReport теряют предварительно загруженное значение после внутренней обратной передачи - PullRequest
0 голосов
/ 22 апреля 2020

На нашем веб-сайте мы используем элемент управления ReportViewer для отображения отчетов SSRS. Когда пользователь щелкает ссылку для отчета, код заполняет некоторые исходные переменные для представления правильного отчета, например:

reportViewerNew.ServerReport.ReportServerUrl = new Uri(ReportURL);
reportViewerNew.ServerReport.ReportPath = ReportPath + ReportName;

Каждый отчет был создан по крайней мере с одним параметром с именем «userName». В отчете это скрытый параметр отчета, и значение передается в хранимую процедуру, которая заполняет отчет, чтобы мы могли отслеживать, кто запрашивает информацию.

Итак, в коде у нас есть блок Switch загрузить массив (длина зависит от того, какой отчет вызывается), который имеет как минимум это «userName»:

default:
    RptParameters = new ReportParameter[1];
    RptParameters[0] = new ReportParameter("userName", UserID);
    break;

С установленным массивом мы затем передаем предварительно загруженные значения в параметры отчета с помощью метода SetParameters:

reportViewerNew.ServerReport.SetParameters(ReportParameters());

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

Однако ... этот перестает работать , если отчет требует некоторого взаимодействия с пользователем для запуска отчета - например, выбор параметра в одном раскрывающемся меню загружает зависимый раскрывающийся список, выбирая дату, которая загружает раскрывающийся список с соответствующими вариантами, и т. д. c. Кажется, что эта «внутренняя обратная передача» отчета приводит к тому, что скрытый параметр отчета «userName» теряет свое значение, а затем передается учетная запись, которую мы используем для подключения к базе данных.

Я разместил точка останова в коде в строке if (!Page.IsPostBack) для перехвата «обратной передачи» отчета, но это не срабатывает ... похоже, оно является внутренним для элемента управления ReportViewer. Я пытался найти какой-нибудь EventHandler для этого постбэка в документации (https://docs.microsoft.com/en-us/dotnet/api/microsoft.reporting.webforms), но не видел его.

Кто-нибудь знает, почему параметр отчета теряет свое значение, как это предотвратить, или мне нужно по-другому с этим справиться?

...