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