我正在尝试获取用户名的参数并将其值替换为会话的用户名,以便我可以传递给 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”。
我究竟做错了什么?在此先感谢,埃迪