.NET TIPS [ASP.NET]DataGridコントロールでハイパーリンクを表示するには?デジタルアドバンテージ2003/09/26 |
|
|
DataGridコントロールの特定の列にハイパーリンクを使用するには、<asp:HyperLinkColumn>要素をDataGridコントロールの<Columns>要素に追加すればよい。このような列は「ハイパーリンク列」と呼ばれる。
<asp:HyperLinkColumn>要素の最も基本的な記述は次のようになる。
<asp:DataGrid ……>
<Columns>
<asp:HyperLinkColumn
DataTextField="title"
DataNavigateUrlField="link"
HeaderText="タイトル" />
……
</Columns>
</asp:DataGrid>
DataTextField属性とDataNavigateUrlField属性には、連結するデータソースの要素のフィールドを指定する。データソースがデータテーブル(DataTableオブジェクト)の場合には、これらの属性にはデータテーブル内のカラムの名前を指定する。DataTextField属性に指定した項目がリンクを設定されたテキストとなり、一方DataNavigateUrlField属性の項目がリンク先となるURL(最終的に<a>タグのhref属性に記述される文字列)となる。
「TIPS:[ASP.NET]DataGridコントロールで特定のカラムのみを表示するには?」では、Build Insiderの新着記事を記述したRSS情報をデータソースとして、記事タイトルと記事概要の一覧をDataGridコントロールで表示していた。そのデータソースには記事へのリンクが記述された「link」カラムも含まれているので、これを利用して記事タイトルの列で表示されているテキストをハイパーリンクにしてみよう。
「TIPS:[ASP.NET]DataGridコントロールで特定のカラムのみを表示するには?」で掲載している2番目のサンプル・プログラム(bounddg2.aspx)の2つの<asp:BoundColumn>要素のうち、最初の要素を<asp:HyperLinkColumn>要素に書き換えたサンプル・プログラムは次のようになる。太字部分が修正した個所だ。
|
|
ハイパーリンク列を表示するC#のサンプル・プログラム(linkdg.aspx) | |
このサンプル・プログラムの実行結果は次のようになる。
サンプル・プログラム(linkdg.aspx)の実行結果 |
URLの書式を指定するには
上記のサンプル・プログラムでは、ハイパーリンクのリンク先として連結するデータを単純なURLとしていた。しかし業務システムなどでは、グリッドでの表示項目に基づいたデータをクエリ文字列とした特定ページへのリンクが必要となることがよくある。つまり、URLが「result.aspx?target=123」といった形式で、「target=123」の「123」の部分を行ごとに設定するような場合だ。
このような書式を指定したURLを使用する場合には、DataNavigateUrlFormatString属性を指定する。この属性を加えた<asp:HyperLinkColumn>タグの記述例は次のようになる。
<asp:HyperLinkColumn
DataTextField="name"
DataNavigateUrlField="id"
DataNavigateUrlFormatString="result.aspx?target={0}"
HeaderText="商品名" />
DataNavigateUrlFormatString属性には、データ連結により置き換えられる部分を「{0}」により指定した文字列を、リンク先のURLとして記述する。このような場合、ハイパーリンクのURLはDataNavigateUrlField属性で指定した項目ではなく、その項目のデータで「{0}」の部分を置き換えたDataNavigateUrlFormatString属性の文字列となる。
なお、テキストに対してもその書式を指定するためのDataTextFormatString属性が用意されている。
カテゴリ:Webフォーム 処理対象:DataGridコントロール 使用ライブラリ:DataGridコントロール(System.Web.UI.WebControls名前空間) 使用ライブラリ:HyperLinkColumnクラス(System.Web.UI.WebControls名前空間) 関連TIPS:[ASP.NET]DataGridコントロールで特定のカラムのみを表示するには? |
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|