C# 限制ReportViewer控件中下拉列表的选项

C# 限制ReportViewer控件中下拉列表的选项,c#,asp.net,reporting-services,reportviewer,reportparameter,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]; pa

我有一个远程模式的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);
}
然后,我第一次加载页面时,只显示一个选项。当我单击“运行报告”按钮并刷新报告时,所有原始选项都返回到列表中,并且我在报告中收到一个索引超出范围错误


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

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

我将向报表本身添加一个名为@Top的新参数。默认情况下,该值是您知道的过高值,如1000

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

SELECT TOP @Top
(your original query here)

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

加载页面后,按钮单击事件应运行。你能证实这是真的吗?GetParameters()调用是否因为parameters集合为空而发生超出范围的异常?该按钮实际上是报表的一部分,我还无法找到直接使用它的事件处理程序(我不是开发报告的人,我只是想让它在这个特殊的下拉条件下从网站上运行。我对SSRS报告知之甚少,或者为什么它内置了一个按钮。)我不知道异常何时发生,因为它也是某种“部分”页面没有崩溃,我只是得到一些文本“索引超出范围”你能告诉我你用的是什么版本的C#和report control吗?我不知道,我没有这方面的经验。我想调查这是我的下一步行动,我花了太多时间试图让查看器按我想要的方式工作。