- - PR -
ASP.NET 動的に追加したImageButtonのClickイベントの処理
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-01-09 19:26
ASP.NET でとりあえず動作はしていますが、
現在のやり方はあまりにも原始的で、旧世代のコーディングだと 思うので、スマートなやり方があったら教えていただけないでしょうか。 データベースにデータを検索実施後、その結果を WebControlのTableに書き出しています。 当然、データレコード数は可変です。 そのとき 1列目にファイル名、2列目に操作ボタンを書いています。 こんな感じになります。 ------------- aaa.jpg | 開く | ------------- 開くボタンはImageButtonコントロールを動的に追加しています。 上記の例ではaaa.jpgがデータベース上で内部的に100番という キーが割り当てられていると仮定します。 さて、現在の私のソースでは、 ImageButton imgBtn = new ImageButton(); imgBtn.ID = "OPEN_" + 100.ToString(); imgBtn.Click += new System.Web.UI.ImageClickEventHandler( this.imgOpen_Click ) ; と記述し、(=すなわち、IDにどのファイルに関する情報なのかを識別するIDを持たせ) ハンドラとなる関数では、 private void imgOpen_Click( object sender , System.Web.UI.ImageClickEventArgs e ) { // キャストします。 try { System.Web.UI.WebControls.ImageButton imgBtn = ( System.Web.UI.WebControls.ImageButton )sender ; // _ でSplitあるいはIndexOfで _の位置を探してIDを取得 // できることは確認済 } catch { // キャストに失敗した場合の処理 // Do Nothing return; } } このように、IDを取り出しています。 この処理自体は適切に動作しているのですが、 何かしょぼい(オブジェクト指向っぽくない)ような気がしてなりません。 例えば、VBの(VB.NETではなくVB)場合だったら、動的にボタンを追加するときに、 このような情報をTagプロパティに埋め込んで区別するなどの方法がありましたが、 ASP.NETでは、このような場合どのように書くのがスマートなのでしょうか。 なお、上記例では OPEN_というPrefixを使用していますが、 これは、同一ページ内に同じ100番のダウンロードを行わせるための ダウンロードボタンも設けているため、単純に100番を imgBtn.IDとするわけにはいかないのです。 (開くボタンのみならば、imgBtn.ID = "100"; とするのですが・・) | ||||||||
|
投稿日時: 2004-01-09 20:05
platiniさん、こんばんは。
こんなの↓どうでしょう?
| ||||||||
|
投稿日時: 2004-01-09 20:15
きくちゃんさん ありがとうございます。
素晴らしいです。まだ、動作確認はしていませんが、 MSDNでCommandName,CommandArgumentのトピックを読みました。 こんなスマートな解決策を提供していただいてありがとうございました。 早速試してみます。 |
1