在新窗口中打开SSRS URL

Kei*_*son 14 javascript reporting-services

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

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

Fields!id!Value是要传递的SFDC ID.我在尝试这个表达无济于事!

我知道这是非常简单但我只是找不到它.在此先感谢您的帮助!

UPDATE!

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

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

Chr*_*own 8

对于记录,原始语法的问题在于您尝试从引用SSRS字段到输入字符串而不正确地分离两者.如果您希望以前的语法工作(不删除目标窗口的名称(即'_blank'),您可以这样做:

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

我很长时间都在努力,但只要你小心翼翼地将所有东西放在一起,你就可以使这些变得非常复杂.您还可以在同一个动作表达式中添加多个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 & "'));"
Run Code Online (Sandbox Code Playgroud)

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


Ste*_*ger 5

Nonono,请勿使用 ="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 
Run Code Online (Sandbox Code Playgroud)

它将在新窗口中打开。

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

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

USE [ReportServer$MSSQL_2008_R2]

SELECT 
     [ItemID]
    ,[Path]
    ,[Name]
    ,[ParentID]
FROM [Catalog]
WHERE Type = 2
Run Code Online (Sandbox Code Playgroud)

这就是您可以在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 
Run Code Online (Sandbox Code Playgroud)

如果只需要文件夹:

WHERE Type = 1
Run Code Online (Sandbox Code Playgroud)

如果只需要数据源:

WHERE Type = 5
Run Code Online (Sandbox Code Playgroud)