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); |
上記のコードは、外部サイトにリンクされた画像を追加します。
次のコードを 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); |
上記のコードは、[印刷プレビュー]ダイアログボックスへのリンクを追加します。
デフォルトでは、C1ReportViewer の LinkTarget プロパティを使用して設定されたリンクをクリックすると、同じブラウザウィンドウに表示されます。ただし、リンクを新しいウィンドウで開くように選択できます。デフォルトの動作をオーバーライドするには、レポートに含まれるハイパーリンク用にカスタムスクリプトを記述する必要があります。 これらのハイパーリンクは、明示的に作成して、レポートのドキュメントの本文に追加できます。
たとえば、次のコードを追加します。
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; } |
このスクリプトはサイズ変更リンクを初期化します。