ReportViewerは相対パスでハイパーリンクをレンダリングできますか?
-
03-07-2019 - |
質問
" RelativePath"という名前のフィールドを持つデータソースでローカルレポートを作成しました。 WinFormsアプリがレポートをレンダリングするとき、RelativePathフィールドで指定された場所にファイルをエクスポートします。レポートビルダーで、ナビゲーション|ハイパーリンクアクション| URLへジャンプを" = Fields!RelativePath.Value"に設定します。レポートのEnableHyperlinkプロパティをtrueに設定します。ただし、アプリがレポートをレンダリングするたびに、ハイパーリンクはアクティブになりません。ただし、URLへのジャンプを絶対パスにハードコードすると、問題なく機能します。 ReportViewerは相対パスでハイパーリンクをレンダリングしませんか?
解決
私は同じ問題に取り組んでいますが、その後、reportviewerは相対パスのハイパーリンクをサポートしていないという結論に達しました。 この問題を解決するには、相対パスを取得するカスタムコードを追加してから、URLの一部にしたいフィールド値と連結します。
シャディ
他のヒント
同じ問題が発生しました。これを回避するために、「AbsolutePath」というレポートパラメーターを作成しました。
.rdlcファイルのデザインビューに移動します。 [レポートデータ]で、タブには、[パラメータ]が表示されます。ノード。右クリックして:
- パラメータを追加...
- [全般]タブで、「AbsolutePath」と入力します。 Nameプロパティで。
- 「デフォルト値」をクリックします
- 「値を指定」を選択します;ラジオボタン。
- 新しい値" AbsolutePath"を追加します。
TextBoxのアクション式で、このようなものを追加します=" javascript:void(window.open( '" + Parameters!AbsolutePath.Value +" /yourpage.aspx?id = " + Fields!Id.Value +" '、' _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"