SSRS设置参数以编程方式导致状态ValidValueMissing

Edd*_*lat 6 c# asp.net rdl reporting-services report-viewer2010

我正在尝试获取用户名的参数并将其值替换为会话的用户名,以便我可以传递到DRL中的存储过程以生成具有此用户名的表时间戳.参数"username"是RDL的参数之一,它带有默认值,我正在尝试使用以下代码更改它.

替换其中一个ReportParameters:

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

查找用户名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;
Run Code Online (Sandbox Code Playgroud)

将参数设置为ServerReport:

ReportViewer.ServerReport.SetParameters(parameters);
Run Code Online (Sandbox Code Playgroud)

运行报告后,我收到消息"'用户名'参数缺少值"

当我调试并查看ServerReport.GetParameters()我可以看到我确实有ReportParameter"用户名"时,我确实有值(新值),但其状态为"MissingValidValue".

我究竟做错了什么?在此先感谢,艾迪

Edd*_*lat 6

由于这篇文章,我终于设法解决了这个问题:http://technet.microsoft.com/en-us/library/dd220464.aspx

如果已为参数指定了可用值,则有效值始终显示为下拉列表.例如,如果为DateTime参数提供可用值,则会在参数窗格中显示日期下拉列表而不是日历控件.要确保报表和子报表之间的值列表一致,可以在数据源上设置一个选项,以便将单个事务用于与数据源关联的数据集中的所有查询.

由于我在"可用值"选项中输入了默认值,除了将其置于"默认值"之外,报告还尝试验证新会话用户名,该用户名未列为"可用值".删除"可用值"中的值后,我不必验证代码隐藏中提供的新ReportParameter,并成功呈现报表.