Открыть URL-адрес SSRS в новом окне

У меня есть отчет, который передает идентификатор, который используется для доступа к salesforce.com. Я хочу открыть SFDC как новую страницу из гиперссылки URL. Однако я ничего не работаю!

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

Поля! id! Значение - это идентификатор SFDC, который передается. Я пытаюсь сделать это в выражении безрезультатно!

Я знаю, что это что-то очень простое, но я просто не нахожу его. Заранее спасибо за помощь!

ОБНОВЛЕНИЕ!!!

Подумал! Для записи синтаксис:

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

Ответ 1

Для записи проблема с исходным синтаксисом заключалась в том, что вы пытались перейти от ссылки к полю 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, отображаются внутри строки (т.е. "").

Ответ 2

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 

и он откроется в новом окне.

Изменить:
Если вы хотите создать свою собственную страницу отображения:

Вот как вы получаете все отчеты:

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

Ответ 3

Если вы хотите связать внешний 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, если просмотр из отчета в браузере и стандартная ссылка в противном случае.

Ответ 4

Я задал этот вопрос и ответил много раз, и мне интересно, просто ли написать функцию С#, чтобы сделать этот вызов, чтобы избежать сложности цитирования.