【问题标题】:Limit the options for a dropdown list in ReportViewer Control限制 ReportViewer 控件中下拉列表的选项
【发布时间】:2015-02-23 22:54:10
【问题描述】:

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

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

是否可以在页面代码中做到这一点?

【问题讨论】:

  • 按钮点击事件应该在 page_load 之后运行。你能证实这是事实吗? GetParameters() 调用是否因为参数集合为空而发生超出范围异常?
  • 该按钮实际上是报告的一部分,我一直无法找到直接使用它的事件处理程序(我不是开发报告的人,我只是假设使其在具有这种特殊下拉条件的站点上工作。我对 SSRS 报告或为什么内置按钮知之甚少。)我不知道异常何时发生,因为它也是那个报告。页面没有崩溃,我只是得到一些文本“索引超出范围”来代替报告的位置。
  • 您好,请问您使用的是什么版本的 C# 和报告控件?

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


【解决方案1】:

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

然后您的下拉菜单的数据集将被修改为

SELECT TOP @Top
(your original query here)

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我不知道,我对这类事情没有经验。我认为调查这是我的下一步行动,我花了太多时间试图让查看器按照我想要的方式工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 2013-01-03
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多