报告服务-SSRS中的Javascript没有正确处理数字符号

reporting services - Javascript in SSRS not handling number sign correctly

本文关键字:正确处理 数字 符号 Javascript 服务 -SSRS 中的 报告      更新时间:2023-09-26

我正在SSRS中使用一些JavaScript代码在报表的新窗口中打开链接。报表链接指向服务器上的文件位置。我在Reporting Services中使用的链接代码是:

="javascript:void(window.open('"+ "file:" & Replace(Fields!FilePath.Value,"'","/") + "','_blank'))"

当文件名为"正常"时,例如:,此代码工作正常

''myserver'images'Files'1969'1-000-002_SE 82ND AVE 1_1969.pdf

然而,当有特殊字符(至少是#)时,我会收到一条错误消息。事情就是这样。一个示例文件名是:

''myserver'images'Files'1978'1-001-003_SE 82nd AVE #12 1_1978.pdf

在这种情况下,返回的URL是:

''myserver'images'Files'1978'1-001-003_SE 82nd AVE 

如图所示,URL在数字符号的第一个实例处被切断。如果我复制违规链接的快捷方式,这就是我得到的:

javascript:void(window.open('file://myserver/images/Files/1978/1-001-003_SE%2082nd%AVE%20#12%201_1978.pdf','_blank'))

JavaScript似乎对文件路径进行了正确编码,但在JavaScript代码和URL之间的转换中丢失了一些内容。

我无法更改文件名,所以我需要想出一种使用特殊字符的方法。我尝试过使用EncodeURI(),但不知道如何在SSRS中正确格式化它以使用现有的JavaScript。

任何想法都将受到欢迎。

URL将识别HTML字符号。因此,在JavaScript之外,为您期望找到的每个特殊字符使用SSRS替换函数,用相应的HTML数字代码替换每个字符。例如,英镑符号是%23;空间为%20。

请注意,我有一些页面使用磅符号来分割URL参数,在这种情况下,似乎不起作用。然而,它可能适用于您的情况。要尝试此操作,请将您的功能更改为以下内容:

="javascript:void(window.open('"+ "file:" & Replace(Replace(Fields!FilePath.Value,"'","/"),"#","%23") + "','_blank'))"

如果这对你有用,你可以在这里找到更多的代码。