Может ли ReportViewer отображать гиперссылку с относительным путем?

StackOverflow https://stackoverflow.com/questions/401664

Вопрос

Я создал локальный отчет об источнике данных, в котором есть поле с именем "relativePath".Когда мое приложение WinForms отображает отчет, оно экспортирует файлы в местоположение, указанное в поле relativePath.В построителе отчетов я установил для навигации | действия с гиперссылкой | Перехода по URL-адресу значение "=Fields!relativePath.Value" и установил для свойства EnableHyperlink отчета значение true.Однако всякий раз, когда мое приложение отображает отчет, гиперссылка не активна.Однако, если я жестко закодирую переход к URL-адресу по абсолютному пути, это будет работать просто отлично.Разве ReportViewer не отображает гиперссылку с относительным путем?

Это было полезно?

Решение

Я боролся с той же проблемой, после чего пришел к выводу, что reportviewer не поддерживает гиперссылки с относительным путем.Решить эту проблему можно, добавив пользовательский код, который извлекает относительный путь, а затем объединяет его со значениями полей, которые вы, возможно, захотите включить в URL-адрес - по крайней мере, это работает для меня.

Шэдди

Другие советы

Я столкнулся с той же проблемой.Чтобы обойти это, я создал параметр отчета под названием "AbsolutePath".

Перейдите в режим конструктора файла .rdlc.На вкладке "Данные отчета" вы увидите узел "Параметры".Щелкните по нему правой кнопкой мыши, чтобы:

  1. Добавьте параметр...
  2. На вкладке Общие введите "Абсолютный путь" в свойство Name.
  3. Нажмите на "Значения по умолчанию".
  4. Установите переключатель "Указать значения".
  5. Добавьте новое значение "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"
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top