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

时间:2011-09-11 07:57:14

标签: c# asp.net reporting-services rdl report-viewer2010

我试图获取用户名的参数并将其值替换为会话的用户名,以便我可以传递到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"用户名",我确实有值(新值),但其状态为&#34 ; MissingValidValue"

我做错了什么? 提前致谢, 埃迪

1 个答案:

答案 0 :(得分:6)

由于这篇文章:http://technet.microsoft.com/en-us/library/dd220464.aspx

,我终于设法解决了这个问题
  

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

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