Может ли ReportViewer отображать гиперссылку с относительным путем?
-
03-07-2019 - |
Вопрос
Я создал локальный отчет об источнике данных, в котором есть поле с именем "relativePath".Когда мое приложение WinForms отображает отчет, оно экспортирует файлы в местоположение, указанное в поле relativePath.В построителе отчетов я установил для навигации | действия с гиперссылкой | Перехода по URL-адресу значение "=Fields!relativePath.Value" и установил для свойства EnableHyperlink отчета значение true.Однако всякий раз, когда мое приложение отображает отчет, гиперссылка не активна.Однако, если я жестко закодирую переход к URL-адресу по абсолютному пути, это будет работать просто отлично.Разве ReportViewer не отображает гиперссылку с относительным путем?
Решение
Я боролся с той же проблемой, после чего пришел к выводу, что reportviewer не поддерживает гиперссылки с относительным путем.Решить эту проблему можно, добавив пользовательский код, который извлекает относительный путь, а затем объединяет его со значениями полей, которые вы, возможно, захотите включить в URL-адрес - по крайней мере, это работает для меня.
Шэдди
Другие советы
Я столкнулся с той же проблемой.Чтобы обойти это, я создал параметр отчета под названием "AbsolutePath".
Перейдите в режим конструктора файла .rdlc.На вкладке "Данные отчета" вы увидите узел "Параметры".Щелкните по нему правой кнопкой мыши, чтобы:
- Добавьте параметр...
- На вкладке Общие введите "Абсолютный путь" в свойство Name.
- Нажмите на "Значения по умолчанию".
- Установите переключатель "Указать значения".
- Добавьте новое значение "AbsolutePath".
В выражении действия вашего текстового поля добавьте что-то вроде этого ="javascript:void(window.open('" + Параметры!Абсолютный путь.Значение + "/yourpage.aspx?id=" + Поля!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"