1

我正在扩展现有应用程序以使用 ASP.Net WebForms ReportViewer 控件托管 SSRS 报告。现有大量报告。除了我们还需要将另一个参数传递给每个报告之外,这不会是一个问题。

我们团队中的某个人建议我们可以添加另一个参数,SSRS 会将其传递给与每个报告关联的存储过程。我对报告服务一无所知。

我尝试了以下方法:

private void AddNewParameter(Report report)
{
    var reportParameters = new List<ReportParameter> { new ReportParameter(paramName, "foo", false) };
    report.SetParameters(reportParameters);
}

调用 Report.SetParameters() 抱怨报告中不存在新参数。SetParameters()的MSDN页面在底部附近有一条注释,上面写着:

“为 SetParameters 方法指定的参数必须在原始报表定义中定义。”

任何人都可以确认我有一种下沉的感觉,即我们所有的报告都必须更改以采用新参数?

4

1 回答 1

0

您尝试的方法将是一条死胡同。对不起。下沉的感觉得到确认。然而...

如果有大量报告,那么您可能会通过修改底层报告定义语言来制定一种自动更新它们的方法。我刚刚发布的链接将带您访问 TechNet 文章,该文章包含指向每个版本的实际架构定义等的进一步链接。

RDL 实际上只是 XML,直接引用 TechNet 文章:

RDL 由与为 Reporting Services 创建的 XML 语法相匹配的 XML 元素组成。您可以通过访问报告定义文件中的代码程序集来添加自己的自定义函数来控制报告项值、样式和格式。

只有您可以权衡开发此类解决方案与手动方法的工作。

要了解所需的更改:

  1. 保存一份报告的副本。
  2. 使用更改修改报告
  3. 将修改后的 rdl 与原始版本进行比较(BeyondCompare、notepad++ 等)

如果您对解析 XML 感到满意,那么在剩余报告中重现更改将完全可行。

于 2013-10-22T22:04:36.213 回答