Параметры набора SSRS программно вызывают состояние ValidValueMissing

Я пытаюсь получить параметр имени пользователя и заменить его значение именем пользователя сеанса, чтобы я мог перейти к хранимой процедуре внутри DRL для создания метки времени таблицы с этим именем пользователя. Параметр «имя пользователя» — это один из параметров RDL, который имеет значение по умолчанию, и я пытаюсь изменить его с помощью следующего кода.

Замена одного из ReportParameters:

var userParameter = GetUserParameter();
if (userParameter != null)
{
    newParameters.Remove(newParameters.FirstOrDefault(param => param.Name.Contains(CurrentUserParameterName)));
    newParameters.Add(userParameter);
}

Поиск имени пользователя ReportParameters:

var paremeters = ReportViewer.ServerReport.GetEditableHiddenParameters();

//finds parameter by its name, pelase view const value in CurrentUserParameterName
var userParameter = paremeters.FirstOrDefault(param => param.Name.Contains(CurrentUserParameterName));
if (userParameter != null)
{
    userParameter.Values.Clear();
    userParameter.Values.Add(Utils.GetUserName());
}
return userParameter;

Установите параметры для ServerReport:

ReportViewer.ServerReport.SetParameters(parameters);

После запуска отчета я получаю сообщение "Параметр "имя пользователя" не имеет значения"

Когда я отлаживаю и смотрю в ServerReport.GetParameters(), я вижу, что у меня есть ReportParameter «имя пользователя», у меня есть значения (новые значения), но его состояние — «MissingValidValue».

Что я делаю неправильно? Заранее спасибо, Эдди


person Eddie Rozenblat    schedule 11.09.2011    source источник
comment
похоже, что есть член с именем ValidValues ​​с текущим значением имени пользователя и другим пустым членом с именем.   -  person Eddie Rozenblat    schedule 11.09.2011


Ответы (1)


Наконец-то мне удалось решить эту проблему благодаря этой статье: http://technet.microsoft.com/en-us/library/dd220464.aspx

Если вы указали доступные значения для параметра, допустимые значения всегда отображаются в виде раскрывающегося списка. Например, если указать доступные значения для параметра DateTime, раскрывающийся список дат появится на панели параметров вместо элемента управления календарем. Чтобы убедиться, что список значений в отчете и вложенных отчетах согласован, вы можете установить параметр в источнике данных, чтобы использовать одну транзакцию для всех запросов в наборах данных, связанных с источником данных.

Поскольку я ввел значение по умолчанию в параметр «Доступные значения» в дополнение к тому, чтобы поместить его в «Значения по умолчанию», отчет попытался проверить новое имя пользователя сеанса, которое не было указано как «доступное значение». После того, как я удалил значения в «доступных значениях», новый параметр ReportParameter, который я указал в коде программной части, не нужно было проверять, и отчет успешно отобразился.

person Eddie Rozenblat    schedule 14.09.2011