2014-04-16 43 views
1

我正在使用SSRS中的一些JavaScript代碼在報告的新窗口中打開鏈接。報告鏈接指向服務器上的文件位置。我使用Reporting Services中的鏈接的代碼是:SSRS中的JavaScript不能正確處理數字符號

="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 

在這種情況下,什麼獲取返回的網址是:

\\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。

任何想法都會受到歡迎。

+0

只是一個問題,但如果你從文件名中省略#char會發生什麼? –

+0

如上所述,頁面已成功呈現。但是,我無法更改文件名稱。 –

回答

0

URL將識別HTML字符編號。因此,在您的JavaScript之外,爲您希望找到的每個特殊字符使用SSRS替換函數,並用相應的HTML數字代碼替換每個特殊字符。例如,英鎊符號是%23;和一個空間是%20。

請注意,我有一些頁面使用井號來拆分URL參數,並且此不是似乎在這些情況下工作。但是,它可能適用於您的情況。要試試這個,你的功能更改爲以下:

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

如果這都爲你工作,你可以找到更多的這些代碼here的。

相關問題