2009-03-26 15 views
1

У меня есть отчет служб SQL Reporting Services (SQL 2008, построенный с использованием построителя отчетов версии 2.0), который имеет параметр множественного выбора целого (в этом случае список магазинов).SSRS: параметры ASP.NET ReportViewer сбрасываются до значения по умолчанию при нажатии «Просмотр отчета»

Значение по умолчанию: 0 («Все магазины»). Параметр передается в хранимую процедуру как varchar(1024).

Все это прекрасно работает в построителе отчетов или на веб-сайте служб Reporting Services.

Однако с веб-сайта ASP.NET с использованием компонента ReportViewer параметры сбрасываются до значения по умолчанию при каждом выборе «Просмотр отчета».

Я попытался настроить представление на неасинхронную загрузку (меняет контейнер отображения?) Плюс любые другие настройки, которые я мог найти, без успеха. Кто-нибудь знает трюк, чтобы это исправить?

ответ

2

Я допустил ошибку. Элемент управления ReportViewer находился внутри главной страницы. Каждый раз, когда нажимали кнопку «Просмотр отчета», она выполняла обратную передачу и перезапускала сеанс.

Я добавил if (!IsPostBack) перед тем, как установить способ установки.

1

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

Вот подобный сценарий.

У вас есть отчет, который использует параметр отчета с несколькими выборами. Этот параметр заполняется источником данных, который основывает свои значения на некотором табличном запросе.

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

Я считаю, что эта проблема возникает из-за того, что что-то аннулирует ваш набор данных во время выполнения запроса, но я не могу быть на 100% уверенным.

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

Например, ваш CityDataSource может быть заполнен по запросу:

SELECT DISTINCT city, city as SortOrder from accounts 
UNION 
SELECT 'All' as city, '0' as SortOrder 
ORDER BY SortOrder 

Если вы были составление отчетов SQL Reporting Services, вы, возможно, наткнулся на это решение один или два раза.

Теперь мы изменим запрос CityDataSource, чтобы выглядеть следующим образом:

DECLARE @citytable TABLE (city varchar(255), sortorder varchar(255)) 
INSERT INTO @citytable (city, sortorder) VALUES 
(
SELECT DISTINCT city, city as SortOrder from accounts 
) 
SELECT city, sortorder FROM @citytable ORDER BY sortorder 

И делая, что параметры вашего доклада не сбросит больше.

Сохраняемая процедура также будет работать, я подозреваю.

1

Я нашел такую ​​же кодовую ошибку, что и исходный плакат. Я (re) устанавливал учетные данные сервера отчетов каждый раз, когда была загружена страница, а не только когда она была инициализирована. По-видимому, установка учетных данных позволяет сбрасывать все параметры.