| 
 .NET TIPS [ASP.NET]DataGridコントロールに選択ボタンを追加するには?デジタルアドバンテージ2003/10/31  | 
![]()  | 
| 
 | 
|
「TIPS:[ASP.NET]DataGridコントロールの列にボタンを表示するには?」では、<asp:ButtonColumn>要素によりボタン列を定義する方法について解説した。そこで使用したボタン列のボタンは、通常のButtonコントロールと同様の汎用的なものである。つまり、ボタンがクリックされると、それに対応したイベント・ハンドラが呼び出されるというものだ。しかし実際には、DataGridコントロールに追加されたボタンは、特定の行を指定するという単純な用途で使用される場合が多い。そこで、行を選択するのに特化した「選択ボタン」が用意されている。
選択ボタンを使用するには、次のようにボタン列の定義でCommandName属性に「select」を指定するだけだ。
    <asp:DataGrid ……>
    <Columns>
      <asp:ButtonColumn
          Text="選択"
          CommandName="select"
          ButtonType="PushButton"
          HeaderStyle-Wrap="false"
          HeaderText="行選択" />
      ……
    </Columns>
  </asp:DataGrid>
この指定により、選択ボタンがクリックされたときには、通常のボタン列のボタンとしての挙動に加えて以下のような処理がDataGridオブジェクトで行われる。
- 
SelectedIndexChangedイベントが発生する(OnSelectedIndexChanged属性で指定したメソッドが呼び出される)
 - 
選択した行のインデックス番号がDataGridオブジェクトのSelectedIndexプロパティにセットされる
 - 
選択した行(DataGridItemオブジェクト)がDataGridオブジェクトのSelectedItemプロパティにセットされる
 - 	
<SelectedItemStyle>要素で定義しているスタイル(フォントや背景色など)が選択した行に適用される
 
選択ボタンを使用したサンプル・プログラム
次に示すプログラムは、選択ボタンを使用したサンプルである。このプログラムでは各行に[選択]ボタンを表示しており、ボタンがクリックされるとその行の文字が太字なり、背景色が金色になる。また、選択した行の行番号と「タイトル」列で表示している内容を、グリッドのすぐ上にあるLabelコントロールに表示する。
なお、太字部分が今回のポイントとなる部分だ。それ以外のコードについての解説は「TIPS:[ASP.NET]DataGridコントロールで特定のカラムのみを表示するには?」を参照していただきたい。
  | 
|
| 選択ボタンを使用したC#のサンプル・プログラム(selectdg.aspx) | |
サンプル・プログラムの実行結果は次のようになる。
![]()  | 
| サンプル・プログラム(selectdg.aspx)の実行画面 | 
| [選択]ボタンをクリックすると、その行の文字が太字なり、背景色が金色になる。また、選択した行の行番号と「タイトル」列で表示している内容をLabelコントロールに表示する。 | 
 今回のサンプル・プログラムでは行っていないが、DataGridオブジェクトのSelectedIndexプロパティに直接インデックス番号を代入しても、その行を選択された状態にすることができる。ただしこの場合にはSelectedIndexChangedイベント・ハンドラは呼び出されないので注意が必要だ。また、SelectedIndexプロパティに-1を代入すると、どの行も選択されていない最初の状態となる。![]()
| カテゴリ:Webフォーム 処理対象:DataGridコントロール 使用ライブラリ:DataGridコントロール 使用ライブラリ:Labelコントロール 関連TIPS:[ASP.NET]DataGridコントロールの列にボタンを表示するには? 関連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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える 
 
  | 
 |






