限制ReportViewer Control中下拉列表的选项

时间:2015-02-23 22:54:10

标签: c# asp.net reporting-services reportviewer reportparameter

我在远程模式下有一个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);
}

然后我第一次加载页面时,只显示那个选项。当我单击运行报告按钮并且报告刷新时,所有原始选项都返回到列表中,并且我在报告中收到索引超出范围错误。

是否可以在页面代码中执行此操作?

2 个答案:

答案 0 :(得分:1)

我会在报告中添加一个名为@Top的新参数。默认情况下,该值是您知道的太高,如1000。

然后,您的下拉列表的数据集将被修改为

SELECT TOP @Top
(your original query here)

然后在您的PageLoad中,您可以将值传递给ReportViewer设置@Top = 1.这样就会将您的下拉列表限制为仅第一个选项。

答案 1 :(得分:0)

是否可以从报告中评估过滤条件? 如果是这样,我会改变报告以使用表达式或存储过程过滤参数列表数据集,而不依赖于修改报表查看器。