- ベストアンサー
ASP.Net GridViewで複数のボタンを配置し、各ボタンで異なる処理を実行したい
- ASP.NetのGridViewのテンプレートにボタンを2つ配置し、セレクトイベントで選択された行のフィールドの値を取得したいです。
- しかし、2つのボタンそれぞれで異なる処理を行いたいのですが、どのボタンが押されたかを判別する方法がわかりません。
- コマンドボタンの名前のようなプロパティが存在しないため、解決方法を教えていただきたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> 下記のような文で行の背景色を変えるみたいなのですが、 もとの話では >> SelectedRowStyleを任意で適用させる方法はないみたいですね! ということだったはずですが。 ここに記述されたプログラムはSelectedRowStyleの話じゃないですよね? まずSelectedRowStyleを使いたいのか、記述されたプログラムの話をしたいのかきりわけてください。 で、このプログラムの話をするのであれば、質問をわけてもらったほうがいいと思います。 それと、このプログラムだけだと情報が足りないかと思います。 もう少し詳細を説明してほしいです。 #ぱっと見だとセッションつかってるので、その値がどのタイミングで更新されているかが気になります。
その他の回答 (2)
- onos
- ベストアンサー率81% (127/155)
> SelectedRowStyleを任意で適用させる方法はないみたいですね! えと、RowCommandイベントでなにか処理をしたときに行のインデックス番号は取得できてるんですよね? であれば、その行を選択した状態にする(GridView.SelectedIndexに取得した値を設定する)でいいような気がします。
補足
onosさん 大変お世話になっております。 下記のような文で行の背景色を変えるみたいなのですが、RowCommandイベントでこれを実行しても、そのタイミングでは背景色は変わらず、次のボタンが押されたときに背景色が変わる感じでワンテンポ遅れてる感じです。 いろいろなイベントで記述してみたのですが、うまい具合に動作しません。 何かお気づきの点や、アドバイスなどありましたら、何卒ご教授いただければと存じます。 よろしくお願い申し上げます。 Dim Gv As GridView = FormView1.Row.FindControl("GridView1") Gv.Rows(CType(Session("Index"), Integer)).Attributes("bgcolor") = "#FFCCCC"
- onos
- ベストアンサー率81% (127/155)
http://msdn.microsoft.com/ja-jp/library/bb907626(v=VS.100).aspx このあたりのサンプルをいろいろいじることで対応できそうな気はします。
お礼
SelectedRowStyleを任意で適用させる方法はないみたいですね! ご提示いただきました方法で、ボタン選択ができました。 ありがとうございました。
補足
onosさん 大変お世話になっております。 なるほど! SelectedIndexChangingではなくて、RowCommand イベントを使用するのですね! 問題なくボタン選択ができました。 行のインデックス番号の取得もできました。 ほぼ、解決いたしました。 関連事項でもしご存じでしたらお教えいただきたいのですが、CommandName に Select をいれた時にボタンを押すと、SelectRowStyleに設定してある背景色やその他のプロパティなどが適応されますが、今回のRowCommandイベントではこれは適応さません。任意でこのSelectRowStyleを適応させる方法をもしご存じでしたらお教えいただけないでしょうか? 何卒お願い申し上げます。
お礼
onosさん 大変お世話になっております。 混乱させてしまい、大変申し訳ございませんでした。 もともと、Select 以外のボタンで行の背景色を変えたかったのが主旨でした。 Dim Gv As GridView = FormView1.Row.FindControl("GridView1") Gv.Rows(CType(Session("Index"), Integer)).Attributes("bgcolor") = "#FFCCCC" この記述で背景色を変えることができましたので、解決できました。 いつも いろいろなヒントやご指摘ありがとうございました。 これ以降何か質問が出ましたら、改めてご質問させていただきます。 ありがとうございました。