2008-12-30 74 views
0

我已经在一个名为“RelativePath”的字段的数据源上创建了一个本地报告。当我的WinForms应用程序呈现报表时,它将文件导出到RelativePath字段中指定的位置。在报告生成器中,我将Navigation | Hyperlink action | Jump to URL设置为“= Fields!RelativePath.Value”,并将报告的EnableHyperlink属性设置为true。但是,每当我的应用程序呈现报表时,超链接都不会处于活动状态。但是,如果我将Jump to URL硬编码为绝对路径,那么它工作得很好。 ReportViewer是否不使用相对路径呈现超链接?ReportViewer可以渲染一个具有相对路径的超链接吗?

回答

1

我一直在努力解决相同的问题,之后我得出结论,reportviewer不支持超链接与相对路径。 解决此问题的方法是添加一个自定义代码,用于检索相对路径,然后使用您希望成为URL一部分的字段值进行协调 - 至少适合我。

Shaddie

+0

我得出了同样的结论。你说你必须将相对URL变成绝对URL,但我使用WinForms ReportViewer并需要相对URL来使得呈现的报表具有可移植性。最后,我放弃了,只是写出了一个HTML文件。 – flipdoubt 2009-01-07 13:03:00

1

我遇到了同样的问题。为了解决这个问题,我创建了一个名为“AbsolutePath”的报告参数。

转到.rdlc文件的设计视图。在“报告数据”选项卡上,您会看到一个“参数”节点。右键点击它来:

  1. 添加参数...
  2. 在常规选项卡,在Name属性中输入 “AbsolutePath”。
  3. 单击“默认值”
  4. 选择“指定值”单选按钮。
  5. 添加新的值“AbsolutePath”。

在你的文本框的动作表情,加上这样的事情!=! “的javascript:无效(window.open('” + 参数AbsolutePath.Value + “/yourpage.aspx?id=” +字段标识.Value +“','_blank'))”

您可以看到新的“AbsolutPath”参数可用于添加到表达式中。

现在,您需要将值传递给报告的参数,如下所示。

string baseUrl = Request.Url.GetLeftPart(UriPartial.Authority); 
    var param = new ReportParameter("AbsolutePath", baseUrl); 
    this.ReportViewer.LocalReport.SetParameters(param); 
0

只需使用全局变量Globals!ReportServerUrl在表达

= Globals!ReportServerUrl + "yourpath"