16

我有一份报告传递了一个用于访问 salesforce.com 的 ID。我想从 URL 超链接将 SFDC 作为新页面打开。但是,我所做的一切似乎都不起作用!

="javascript:void(window.open(' https://na5.salesforce.com/& Fields!id.Value,'_blank'))"

Fields!id!Value 是正在传递的 SFDC id。我在表达式中尝试这个无济于事!

我知道这很简单,但我只是没有找到它。提前感谢您的帮助!

更新!!!

弄清楚了!!!为了记录,语法是:

="javascript:void(window.open(' https://na5.salesforce.com/ " & Fields!id.Value & "'))"

4

4 回答 4

11

作为记录,您原始语法的问题是您试图从引用 SSRS 字段到输入字符串而没有正确分隔两者。如果您希望以前的语法正常工作(不删除目标窗口的名称(即“_blank”),您可以这样做:

="javascript:void(window.open('https://na5.salesforce.com/" & Fields!id.Value & "','_blank'))"

我为此苦苦挣扎了很长时间,但是只要您小心地将所有内容正确地放在一起,就可以使这些变得非常复杂。您还可以在同一个操作表达式中添加多个 javascript 命令(但不能添加函数)。以下是我最复杂的 SSRS Go-to-URL Action 命令之一:

="Javascript:" 
    & IIF(left(Fields!Name.Value,11)="RESTRICTED-", 
        "alert('Restricted!'); ","") & IIF(Fields!Name_Alert.Value = 1, "alert('Alternate Alert!'); ","") 
    & "void(window.open('" 
    & Globals!ReportServerUrl 
    & "/Pages/ReportViewer.aspx?%2fJPD%2fPO_Dashboard%2fJuvenile_Profile&rs:Command=Render" 
    & "&rc:Parameters=true" 
    & "&Emp_Number=" 
    & Parameters!Param1.Value 
    & “&ID=" & Fields!ID.Value & "'));"

关键是要确保 javascript 所需的任何和所有必要的单引号都显示在字符串中(即“'”)。

于 2013-11-20T17:14:45.453 回答
7

诺诺,不要用 ="javascript:void(window.open(
首先,它破坏了 PDF 和 Excel 报告,
其次,它在 IE11 中不起作用,也可能 < 11。
经过测试,它只适用于我的 Chrome。
第三,把它放在一起是一团糟。

有一个更简单、更好的解决方案:
添加&rc:LinkTarget=_blank到您的报告访问 URL,例如:

https://your-domain.com/ReportServer/Pages/ReportViewer.aspx?%2fJPD%2fPO_Dashboard%2fJuvenile_Profile&rs:Command=Render&rc:LinkTarget=_blank 

它将以新的方式打开窗户标签。

编辑:
如果您想制作自己的显示页面:

这是您获取所有报告的方式:

USE [ReportServer$MSSQL_2008_R2]

SELECT 
     [ItemID]
    ,[Path]
    ,[Name]
    ,[ParentID]
FROM [Catalog]
WHERE Type = 2

这就是您可以在 x 级别显示所有文件夹/报告的方式

;WITH CTE AS 
(
    SELECT 
         [ItemID]
        ,[Path]
        ,[Name]
        ,[ParentID]
        ,0 AS lvl
        ,CAST([Name] AS nvarchar(MAX)) AS RecursivePath 
     FROM [Catalog] 
     WHERE [ParentID] IS NULL 


     UNION ALL 

     SELECT 
         [Catalog].[ItemID]
        ,[Catalog].[Path]
        ,[Catalog].[Name]
        ,[Catalog].[ParentID] 
        ,cte.lvl +1 AS lvl
        ,CAST(cte.RecursivePath + '/' + [Catalog].[Name] AS nvarchar(MAX)) AS RecursivePath 
     FROM CTE 
     INNER JOIN [Catalog]
        ON [Catalog].ParentID = CTE.ItemID 



) 

SELECT * FROM CTE 
WHERE lvl = 1 
ORDER BY lvl, Path 

如果您只想要文件夹:

WHERE Type = 1

如果您只想要数据源:

WHERE Type = 5
于 2014-10-16T12:51:01.967 回答
4

例如,如果您想要链接到外部 URL 并希望链接在报表查看器中以及如果您导出到 Excel 中都可以使用,我使用以下表达式。

=IIF(
  Globals!RenderFormat.Name = "RPL",
 "javascript:void(window.open('http://www.domain.com/page/" & Fields!Page_ID.Value & "','_blank'))",
  "http://www.domain.com/page/" & Fields!Page_ID.Value
)

如果从浏览器中的报告中查看,它将使用 JavaScript,否则使用标准链接。

于 2016-03-01T12:44:05.693 回答
0

这是我用过的;它将在一个新选项卡中打开 ChildReport,其中包含参数凭证_id 及其从数据集传递的值。

="javascript:void window.open(" &"'"& Globals!ReportServerUrl &"/Pages/ReportViewer.aspx?"&Globals!ReportFolder &"/JournalVoucher&voucher_id="&Fields!account_voucher_id.Value &" ','_blank')"
于 2021-05-12T11:17:01.513 回答