2008年11月26日

ASP.NET ボタン列を2つ配置し、どちらのボタンがクリックされたか判断する。

 GridViewを使用し、行を選択する方法は、「GridViewで行を選択できるようにする。」で説明している通りです。

 選択するボタンが1つだけならば、「GridViewで行を選択できるようにする。」のそのままでいいのですが、ボタン列を2つ配置し、クリックされたボタンによって処理を変更したい場合があるとします。
 選択された行も、その際には必要となり、どちらのボタンがクリックされたのかを判断するには、GridViewRowCommandイベントを使用します。

<図>
sample014-1.JPG

>>>




ポイント型無料ホームページサービス「デジデジ」

>>>

 ボタン列が1つだけならば、GridViewSelectedIndexChangedイベントで、選択された行のインデックスが取得できますが、複数のボタン列の場合は、RowCommandを使用することとなります。

ASP.NET GridViewで選択された行のインデックスを取得する。

 RowCommandの取得できる引数のGridViewCommandEventArgsの値を取得することで、どのボタンがクリックされたのか、選択されている行のインデックスは何かを取得することが出来ます。

 GridViewを配置し、列の編集をする際に、ボタン列を2つ配置させます。
 ボタン列の編集で、CommandNameにクリックするボタンのコマンド名を入力します。
 コマンド名は、自分の分かりやすい名前にしても問題ありません。
 今回は、「選択」ボタンには「selection」、「編集」ボタンには「edition」と名前をつけたとします。

<図>
sample014-2.JPG


GridViewCommandEventArgsCommandNameプロパティを取得することで、どちらのボタンがクリックされたのかを取得することが出来ます。
また、GridViewCommandEventArgsCommandArgumentプロパティの値を取得することで、選択された行のインデックスを取得することが可能です。

<コード>
------------------------------------------------
  Private Sub gv_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gv.RowCommand
    Dim strCommandName As String = e.CommandName

    Dim intSelectIndex As Integer = e.CommandArgument

    Select Case strCommandName
      Case "selection" '選択された場合
        Label1.Text = "選択ボタンがクリックされました。"

      Case "edition" '編集の場合
        Label1.Text = "編集ボタンがクリックされました。"
    End Select

  End Sub
------------------------------------------------

月額\3,150-[税込]からのVPN構築で簡単ファイル共有!簡単遠隔操作!



posted by Debring at 13:23 | Comment(2) | TrackBack(1) | ASP.NET GridView
この記事へのコメント
まさにこれを探していました!
Posted by at 2011年06月08日 10:06
RowCommand の場合SelectedRowStyleは適応されませんが、これを使用した場合はどのように背景色を変えたら良いでしょうか?
Posted by BOB at 2012年11月07日 09:20
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック

【ASP.NET】 GridViewのフィールドに DBのレコードに応じて、画像を表示する方法
Excerpt: GridViewのフィールドの値で、DBの項目の値に応じて画像を表示する方法を 紹介したい。 GridViewのImageField/HyperLinkFieldの使い方である。 紹介H..
Weblog: OneForAll ブログ
Tracked: 2009-06-12 19:31
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。