【问题标题】:Rendering HTML Link in SSRS is omitting the target attribute在 SSRS 中渲染 HTML 链接省略了目标属性
【发布时间】:2014-02-19 08:32:08
【问题描述】:

我正在使用 SQL 报告服务 2008 R2,在我的一份报告中,我使用占位符文本呈现 html 链接(锚点)以在 在另一个窗口中打开页面, 表达式文本如下:

="<a target='_top' href=""http://www.google.com""  >Print</a>"

但是,当报表在浏览器中呈现时,target='_blank' 不存在,好像 SSRS 呈现器正在忽略它。

我之前尝试使用 JavaScript 在新窗口中打开,但这在客户端计算机上不起作用,因为我将 SSRS 报告托管在另一个 Web 应用程序中托管的 iframe 中,并且 Web 应用程序和 SSRS报表服务器位于不同的域中。这个问题不能根据这个link使用JavaScript来解决@

所以问题是为什么 SSRS 渲染器忽略了我的 target="_blank" 属性

【问题讨论】:

    标签: html sql-server-2008 reporting-services ssrs-2008


    【解决方案1】:

    我以前用 javascript 做过这个。在链接文本框属性的“操作”选项卡上,选择“转到 URL”。然后在“Select URL”表达式中输入这个脚本:

    javascript:void(window.open('http://www.google.com', '_blank'))
    

    如果您需要数据集传递 URL,您可以这样做:

    ="javascript:void(window.open('" & Fields!YourURL.Value & "', '_blank'))"
    

    【讨论】:

    • 谢谢,但我已经试过了。如果父网站和 SSRS Iframe 都在同一个域上,这很好用,但是当它们在不同的域上时,这将不起作用,请检查此链接:social.msdn.microsoft.com/Forums/sqlserver/en-US/…
    • @HassanMokdad 指的是您发布的链接,使用a href 和使用 JavaScript 操作的一种快乐媒介是将 JavaScript 操作嵌入为 HREF:="&lt;a href=""javascript:void(window.open('http://www.google.com/'), '_blank')""&gt;textbox text&lt;/a&gt;"(已完成在文本框表达式中)
    【解决方案2】:

    在朋友的帮助下终于找到了,要强制SSRS报表在新窗口中打开链接,只需在报表的URL中添加如下查询字符串参数:&amp;rc%3ALinkTarget=_blank 例如,最终的 url 将是:

    http://myreportserver/ReportServer?/MainSSRSFolder/MyReport&rc%3ALinkTarget=_blank
    

    这将使 SSRS 报告中的所有链接在新窗口中打开

    【讨论】:

    • 我一直在尝试这样做,但我得到了一个无效路径错误
    • 是的,该属性确实有所作为。但是,我有一个不同的问题。我在 iframe 中呈现的报告根本没有触发超链接。虽然,使用鼠标右键并选择在新选项卡中打开工作正常。有什么想法吗?
    • 那么,它是什么?超链接目标还是链接目标?我都在尝试,但不工作。
    【解决方案3】:

    如果您在 ASP.NET 页面中使用 reportviewer 控件,您还可以设置属性 HyperlinkTarget="_blank" 以将其应用于页面上的所有链接,而无需调用 javascript。

    【讨论】:

    • 将 ReportViewer 控件的 HyperlinkTarget 属性设置为 _blank 就可以了。
    【解决方案4】:

    当然,我不能真正告诉你为什么设计师选择了这个。我可能会让你得到最接近的确认,这实际上是按设计的,即“它实际上忽略了属性”。

    MSDN lists supported HTML in SSRS,引用那篇文章:

    • 超链接:&lt;A HREF&gt;

    • 字体:&lt;FONT&gt;

    • 标题、样式和块元素:&lt;H{n}&gt;&lt;DIV&gt;&lt;SPAN&gt;&lt;P&gt;&lt;DIV&gt;&lt;LI&gt;&lt;HN&gt;

    • 文本格式:&lt;B&gt;&lt;I&gt;&lt;U&gt;&lt;S&gt;

    • 列表处理:&lt;OL&gt;&lt;UL&gt;&lt;LI&gt;

    从一开始我就推断/猜测支持a 标签上的href 属性。

    【讨论】:

    • 感谢您的回答,看来target属性会被忽略,您知道我该如何解决这个问题,如何在新窗口中打开
    • 不要认为有 解决方案,除非使用 JS 等进行黑客攻击。
    • 检查我找到的解决方案,感谢您的帮助
    【解决方案5】:

    对于其他可能卡在接受的答案不起作用的人,URL 参数是正确的,但 URL 中有错误。 & 符号应替换为问号。和号一般用于在问号将 URL 与要使用的参数隔开后分隔参数,如果只使用一个参数,则只需要问号而不需要与号。

    问号(“?”,ASCII 3F hex)用于划定可查询对象的 URI 与用于表达对该对象的查询的一组词之间的边界。当使用这种形式时,组合的 URI 代表将查询应用于原始对象的结果。

    https://www.w3.org/Addressing/URL/4_URI_Recommentations.html#:%7E:text=Query%20strings,applied%20to%20the%20original%20object.

    接受的答案是正确的,除了一个问题,这会导致 SSRS 在查看报告时崩溃。

    这是在新选项卡/窗口中打开的工作报告 URL 示例。

    http://[reportserver]/[MainReportsFolder]/report/[ReportSubFolder]/[MyNewReport]?rc:LinkTarget=_blank

    括号中的所有内容都应根据您的 SSRS 设置使用您自己的适当值进行更改。

    我看到其他一些人对接受的答案感到困惑,希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多