Я создал локальный отчет для источника данных, в котором есть поле с именем «RelativePath». Когда мое приложение WinForms отображает отчет, оно экспортирует файлы в расположение, указанное в поле RelativePath. В построителе отчетов я установил для параметра Навигация|Действие гиперссылки|Перейти к URL-адресу значение «=Fields!RelativePath.Value» и установил для свойства отчета EnableHyperlink значение true. Однако всякий раз, когда мое приложение отображает отчет, гиперссылка не активна. Однако, если я жестко запрограммирую Jump to URL на абсолютный путь, он будет работать нормально. Разве ReportViewer не отображает гиперссылку с относительным путем?
Может ли ReportViewer отображать гиперссылку с относительным путем?
Ответы (3)
Я боролся с той же проблемой, после чего пришел к выводу, что средство просмотра отчетов не поддерживает гиперссылки с относительным путем. Чтобы решить эту проблему, добавьте пользовательский код, который извлекает относительный путь, а затем объединяется со значениями полей, которые вы можете захотеть сделать частью URL-адреса - по крайней мере, это работает для меня.
Шадди
Я столкнулся с той же проблемой. Чтобы обойти это, я создал параметр отчета под названием «AbsolutePath».
Перейдите в режим конструктора файла .rdlc. На вкладке «Данные отчета» вы увидите узел «Параметры». Щелкните правой кнопкой мыши, чтобы:
- Добавить параметр...
- На вкладке «Общие» введите «AbsolutePath» в свойстве «Имя».
- Нажмите «Значения по умолчанию».
- Выберите переключатель «Указать значения».
- Добавьте новое значение «Абсолютный путь».
В своем выражении действия TextBox добавьте что-то вроде этого ="javascript:void(window.open('" + Parameters!AbsolutePath.Value + "/yourpage.aspx?id=" + Fields!Id. Значение + "', '_blank'))"
Вы можете видеть, что новый параметр AbsolutPath доступен для добавления к вашему выражению.
Теперь вам нужно передать значение в параметр отчета, например.
string baseUrl = Request.Url.GetLeftPart(UriPartial.Authority);
var param = new ReportParameter("AbsolutePath", baseUrl);
this.ReportViewer.LocalReport.SetParameters(param);
Просто используйте глобальную переменную Globals!ReportServerUrl в выражении
= Globals!ReportServerUrl + "yourpath"