我在远程模式下有一个reportviewer控件,它加载一个包含九个参数的报表。在某些情况下,我想限制报告中其中一个参数(下拉列表)的选项。如果我这样做:
protected void Page_Load(object sender, EventArgs e)
{
var rpt = ReportViewer1.ServerReport;
var param = rpt.GetParameters()[3];
var option = param.ValidValues[0];
param.ValidValues.Clear();
param.ValidValues.Add(option);
}
然后我第一次加载页面时,只显示那个选项。当我单击运行报告按钮并且报告刷新时,所有原始选项都返回到列表中,并且我在报告中收到索引超出范围错误。
是否可以在页面代码中执行此操作?
答案 0 :(得分:1)
我会在报告中添加一个名为@Top的新参数。默认情况下,该值是您知道的太高,如1000。
然后,您的下拉列表的数据集将被修改为
SELECT TOP @Top
(your original query here)
然后在您的PageLoad中,您可以将值传递给ReportViewer设置@Top = 1.这样就会将您的下拉列表限制为仅第一个选项。
答案 1 :(得分:0)
是否可以从报告中评估过滤条件? 如果是这样,我会改变报告以使用表达式或存储过程过滤参数列表数据集,而不依赖于修改报表查看器。