我试图获取用户名的参数并将其值替换为会话的用户名,以便我可以传递到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"
我做错了什么? 提前致谢, 埃迪
答案 0 :(得分:6)
由于这篇文章:http://technet.microsoft.com/en-us/library/dd220464.aspx
,我终于设法解决了这个问题如果已为参数指定了可用值,则为有效值 值始终显示为下拉列表。例如,如果您提供 DateTime参数的可用值,日期的下拉列表 出现在参数窗格中而不是日历控件中。确保 您在报表和子报表中的值列表是一致的 可以在数据源上设置一个选项以使用单个事务 数据集中与数据源关联的所有查询。
由于我在“可用值”选项中输入了默认值,除了将其置于“默认值”之外,报告还尝试验证新会话用户名,该用户名未列为“可用值”。删除“可用值”中的值后,我不需要验证我在代码隐藏中提供的新ReportParameter,并且报表成功呈现。