SSRS中的Javascript未正确处理数字符号
我正在SSRS中使用一些JavaScript代码在报告的新窗口中打开一个链接。报告链接指向服务器上的文件位置。我在Reporting Services中使用的链接代码是:SSRS中的Javascript未正确处理数字符号,javascript,reporting-services,ssrs-2008,ssrs-2008-r2,Javascript,Reporting Services,Ssrs 2008,Ssrs 2008 R2,我正在SSRS中使用一些JavaScript代码在报告的新窗口中打开一个链接。报告链接指向服务器上的文件位置。我在Reporting Services中使用的链接代码是: ="javascript:void(window.open('"+ "file:" & Replace(Fields!FilePath.Value,"\","/") + "','_blank'))" 当文件名为“正常”时,此代码工作正常,例如: \\myserver\images\Files\1969\1-000-0
="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 replace函数,将每个字符替换为相应的HTML编号代码。例如,磅符号是%23;一个空格是%20 注意,我有一些页面使用磅符号来拆分URL参数,而这在这些情况下似乎不起作用。然而,它可能在你的情况下起作用。要尝试此操作,请将函数更改为以下内容:
="javascript:void(window.open('"+ "file:" & Replace(Replace(Fields!FilePath.Value,"\","/"),"#","%23") + "','_blank'))"
如果这对您有效,您可以找到更多这些代码。这只是一个问题,但是如果您从文件名中省略#char会发生什么?如上所述,页面将成功呈现。但是,我无法更改文件名。