ReportViewer for ASP.NET Web Forms
レポートドキュメントへのハイパーリンクの追加
レポートビューアのタスク別ヘルプ > レポートドキュメントへのハイパーリンクの追加

C1ReportViewer コントロールでは、ハイパーリンクを組み込むことができます。 ユーザーが Web ページやその他のレポートを開いたり、同じレポート内の別の場所にジャンプしたり、C1ReportViewer の外観を変更したり、カスタム JavaScript を実行したりできるリンクを追加できます。

ドキュメントの中央へのリンクの追加

次のコードを Page_Load イベントに追加します。

Visual Basic
コードのコピー
' 表示オブジェクトにジャンプするには、実際アンカーは必要ありません。
Dim rt4 As New RenderText("ここをクリックしてドキュメントの中央に移動します。")
rt4.Hyperlink = New C1Hyperlink(doc.Body.Children(doc.Body.Children.Count / 2))
rt4.Hyperlink.StatusText = "ドキュメントのほぼ中央に移動します"
doc.Body.Children.Add(rt4)

C#
コードのコピー
// 表示オブジェクトにジャンプするには、実際アンカーは必要ありません。
RenderText rt4 = new RenderText("ここをクリックしてドキュメントの中央に移動します。");
rt4.Hyperlink = new C1Hyperlink(doc.Body.Children[doc.Body.Children.Count / 2]);
rt4.Hyperlink.StatusText = "ドキュメントのほぼ中央に移動します";
doc.Body.Children.Add(rt4);

このコードは、ドキュメントの中央へのリンクを追加します。

アンカーへのハイパーリンクの追加

次のコードを Page_Load イベントに追加します。

Visual Basic
コードのコピー
' アンカーを作成します
Dim rt1 As New RenderText("これは anchor1 を含むテキストです。")
' 名前("anchor1")は、このリンクにジャンプするために使用されます。
rt1.Anchors.Add(New C1Anchor("anchor1"))
rt1.Hyperlink = New C1Hyperlink(New C1LinkTargetPage(PageJumpTypeEnum.Last), "ドキュメントの最後のページに移動します")
doc.Body.Children.Add(rt1)
' anchor1 にハイパーリンクを追加します
Dim rt2 As New RenderText("ここをクリックして anchor1 移動します。")
rt2.Hyperlink = New C1Hyperlink(New C1LinkTargetAnchor("anchor1"), "これは anchor1 へのリンクの上にマウスポインタを置いたときのステータステキストです")
doc.Body.Children.Add(rt2)

C#
コードのコピー
// アンカーを作成します
RenderText rt1 = new RenderText("これは anchor1 を含むテキストです。")
// 名前("anchor1")は、このリンクにジャンプするために使用されます。
rt1.Anchors.Add(new C1Anchor("anchor1"));
rt1.Hyperlink = new C1Hyperlink(new C1LinkTargetPage(PageJumpTypeEnum.Last), "ドキュメントの最後のページに移動します");
doc.Body.Children.Add(rt1);
// anchor1 にハイパーリンクを追加します
RenderText rt2 = new RenderText("ここをクリックして anchor1 移動します。");
rt2.Hyperlink = new C1Hyperlink(new C1LinkTargetAnchor("anchor1"),
"これは anchor1 へのリンクの上にマウスポインタを置いたときのステータステキストです");
doc.Body.Children.Add(rt2);

このコードは、アンカーを追加してから、アンカーにハイパーリンクを追加します。

ハイパーリンク付き画像の追加

次のコードを Page_Load イベントに追加します。

Visual Basic
コードのコピー
' URL へのハイパーリンク付き画像を追加します
Dim ri1 As New RenderImage(Image.FromFile(HttpContext.Current.Server.MapPath("~/C1ReportViewer/Images/google.gif")))
ri1.Hyperlink = New C1Hyperlink(New C1LinkTargetFile("http://www.google.com"), "グーグル検索に移動します... (新しいウィンドウでリンクを開くには、Ctrl キーを押したままクリックします")
doc.Body.Children.Add(ri1)

C#
コードのコピー
// URL へのハイパーリンク付き画像を追加します
RenderImage ri1 = new RenderImage(Image.FromFile(HttpContext.Current.Server.MapPath("~/C1ReportViewer/Images/google.gif")));
ri1.Hyperlink = new C1Hyperlink(new C1LinkTargetFile("http://www.google.com"), "グーグル検索に移動します... (新しいウィンドウでリンクを開くには、Ctrl キーを押したままクリックします");
doc.Body.Children.Add(ri1);

上記のコードは、外部サイトにリンクされた画像を追加します。

カスタム JavaScript アクションの実行

次のコードを Page_Load イベントに追加します。

Visual Basic
コードのコピー
Dim rt5 As New RenderText("'Hello' と呼びかけます。")
rt5.Hyperlink = New C1Hyperlink(New C1LinkTargetFile("javascript:alert('Hello')"))
rt5.Hyperlink.StatusText = "'Hello' メッセージを表示します。"
doc.Body.Children.Add(rt5)

C#
コードのコピー
RenderText rt5 = new RenderText("'Hello' と呼びかけます。")
rt5.Hyperlink = new C1Hyperlink(new C1LinkTargetFile("javascript:alert('Hello')"));
rt5.Hyperlink.StatusText = "'Hello' メッセージを表示します。";
doc.Body.Children.Add(rt5);

上記のコードは、アラートダイアログボックスへのリンクを追加します。

[印刷プレビュー]ダイアログボックスを開く

次のコードを Page_Load イベントに追加します。

Visual Basic
コードのコピー
Dim rt6 As New RenderText("printWithPreview")
rt6.Hyperlink = New C1Hyperlink(New C1LinkTargetFile("exec:printWithPreview()"))
rt6.Hyperlink.StatusText = "レポートをプレビューして印刷します。"
doc.Body.Children.Add(rt6)

C#
コードのコピー
RenderText rt6 = new RenderText("printWithPreview");
rt6.Hyperlink = new C1Hyperlink(new C1LinkTargetFile("exec:printWithPreview()"));
rt6.Hyperlink.StatusText = "レポートをプレビューして印刷します。";
doc.Body.Children.Add(rt6);

上記のコードは、[印刷プレビュー]ダイアログボックスへのリンクを追加します。

ハイパーリンクを新しいウィンドウで開く

デフォルトでは、C1ReportViewerLinkTarget プロパティを使用して設定されたリンクをクリックすると、同じブラウザウィンドウに表示されます。ただし、リンクを新しいウィンドウで開くように選択できます。デフォルトの動作をオーバーライドするには、レポートに含まれるハイパーリンク用にカスタムスクリプトを記述する必要があります。 これらのハイパーリンクは、明示的に作成して、レポートのドキュメントの本文に追加できます。

たとえば、次のコードを追加します。

Visual Basic
コードのコピー
Dim rt2 As New RenderText("カスタムスクリプトを実行します。")
rt2.Hyperlink = New C1Hyperlink(New C1LinkTargetFile("javascript:openPage('http://google.com/')"))
doc.Body.Children.Add(rt2)

C#
コードのコピー
RenderText rt2 = new RenderText("カスタムスクリプトを実行します。");
rt2.Hyperlink = new C1Hyperlink(new C1LinkTargetFile("javascript:openPage('http://google.com/')"));
doc.Body.Children.Add(rt2);

上記のコードは、JavaScript で次のように定義される openPage と呼ばれるメソッドを使用します。

XAML
コードのコピー
<script type="text/javascript">
 function openPage(url){
 window.open(url, "mywindow");
 }
</script>

このメソッドは、ターゲットを新しいブラウザウィンドウで開くように C1ReportViewer に指示します。 新しいハイパーリンクを作成する代わりに、以下のコードを使用して LinkTarget プロパティを希望するリンクに直接設定することもできます。

Visual Basic
コードのコピー
Protected Function MakeDoc() As C1PrintDocument
    Dim doc As New C1PrintDocument()
    Dim report As C1Report = C1ReportViewer.CreateC1Report()
    report.Load(Server.MapPath("~/XML/CommonTasks.xml"), "01: 1行おきに変化する背景色")
    report.Render()
    report.Sections("Detail").Fields("QuantityPerUnitCtl").LinkTarget = "javascript:openPage('http://google.com/')"
    doc = report.C1Document
    Return doc
End Function

C#
コードのコピー
protected C1PrintDocument MakeDoc()
{
   C1PrintDocument doc = new C1PrintDocument();
   C1Report report = C1ReportViewer.CreateC1Report();
  ? report.Load(Server.MapPath("~/XML/CommonTasks.xml"), "01: 1行おきに変化する背景色");
   report.Render();
   report.Sections["Detail"].Fields["QuantityPerUnitCtl"].LinkTarget = "javascript:openPage('http://google.com/')";
   doc = report.C1Document;
   return doc;
}

このスクリプトはサイズ変更リンクを初期化します。