Открыть 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
Я задал этот вопрос и ответил много раз, и мне интересно, просто ли написать функцию С#, чтобы сделать этот вызов, чтобы избежать сложности цитирования.