ReportViewer può eseguire il rendering di un collegamento ipertestuale con un percorso relativo?
-
03-07-2019 - |
Domanda
Ho creato un rapporto locale su un'origine dati che ha un campo denominato "RelativePath". Quando la mia app WinForms esegue il rendering del report, esporta i file nella posizione specificata nel campo RelativePath. Nel generatore di report ho impostato Navigazione | Azione collegamento ipertestuale | Passa a URL su " = Fields! RelativePath.Value " e impostare la proprietà EnableHyperlink del report su true. Ogni volta che la mia app esegue il rendering del report, tuttavia, il collegamento ipertestuale non è attivo. Se eseguo il hardcode del Jump to URL su un percorso assoluto, tuttavia, funziona perfettamente. ReportViewer non esegue il rendering di un collegamento ipertestuale con un percorso relativo?
Soluzione
Ho avuto problemi con lo stesso problema, dopo di che sono giunto alla conclusione che il reportviewer non supporta i collegamenti ipertestuali con il relativo percorso. Per risolvere questo problema è aggiungendo un codice personalizzato che recupera il percorso relativo quindi concantenato con i valori dei campi che potresti voler far parte dell'URL - almeno che funziona per me.
Shaddie
Altri suggerimenti
Ho riscontrato lo stesso problema. Per ovviare a questo, ho creato un parametro di report chiamato " AbsolutePath " ;.
Vai alla vista di progettazione del file .rdlc. Su & ??quot; Report Data " scheda, vedrai un " Parametri " nodo. Fai clic destro per:
- Aggiungi parametro ...
- Nella scheda Generale, inserisci " AbsolutePath " nella proprietà Name.
- Fai clic su " Valori predefiniti "
- Seleziona " Specifica valori " pulsante di opzione.
- Aggiungi nuovo valore " AbsolutePath " ;.
Nell'espressione di azione di TextBox, aggiungi qualcosa del genere = " javascript: void (window.open ('" + Parametri! AbsolutePath.Value + " /yourpage.aspx? id = " + Fields! Id.Value + " ',' _blank ')) "
Puoi vedere che il nuovo " AbsolutPath " è disponibile un parametro da aggiungere alla tua espressione.
Ora dovrai passare il valore nel parametro del rapporto, in questo modo.
string baseUrl = Request.Url.GetLeftPart(UriPartial.Authority);
var param = new ReportParameter("AbsolutePath", baseUrl);
this.ReportViewer.LocalReport.SetParameters(param);
Usa semplicemente la variabile globale Globals! ReportServerUrl
nell'espressione
= Globals!ReportServerUrl + "yourpath"