none
Page_Loadでクリックされたボタンを判別するには RRS feed

  • 質問

  •  いつもお世話になっております。

     Webフォームでボタンをクリックすると、Page_Loadの後にClickイベントが実行されますが、Page_Loadの段階でどのボタンがクリックされたかを判別するにはどのような方法が御座いますか?

     アドバイスをお願い致します。

    2006年6月14日 1:26

回答

  • ここでは文字列の中に"Button"という文字が含まれているかどうかを判定しているだけなので、そのような内容のプログラムを記述してもらえればOKです。

    プログラムの内容を少し解説すると、
    ・ボタンクリック時に、そのボタンのIDがブラウザから送られてくる
    ・そのため、Request.Formの中にあるボタンのIDを取り出す
    ・ボタンのIDからボタンオブジェクトを探して、そのTextプロパティを取り出す
    こんなことをやっています。

    ブラウザからどういった形でリクエストがあがってくるかは、もとのASP.NETのページの内容によって変わってきます。
    そのため、同じような処理をするにしても、ページ毎に作成されるHTMLを解析してうまくデータを取り出せるようなプログラムを記述しないといけません。
    このプログラムがそのまま使えるとは思わないでくださいね。

    2006年6月14日 9:53

すべての返信

  • ボタンをいくつか貼っただけのページであれば、以下のソースでクリックされたボタンのTextプロパティを取り出せます。

            foreach (string s in Context.Request.Form.AllKeys)
                if (s.Contains("Button")) Label1.Text = ((Button)FindControl(s)).Text;

    ただし、この方法は生成されるHTMLに依存してます。
    該当するページ毎にどのようなHTMLが生成されるかを確認し、ボタンのクリックがどのようなRequestとしてあがってくるかを理解したうえで解析する必要があります。

     

    2006年6月14日 3:24
  • どっとねっとふぁん様

     いつもお世話になっております。

     C#にてボタンのTextをRequestで取得し、Lableに表示させるコードだと思います。VBで作成しているのですが、C#をVBに直せなくて困っております。VBだとどのようにコードを書いたらよろしいのでしょうか?

     よろしくお願い致します。

    2006年6月14日 4:33
  • C#からVB.NETへ変換するサイトとして、有名どころとしては、以下です。ただし、まだ、C# 2.0に対応していなかったと思います。

    C# to VB.NET Translator
    http://authors.aspalliance.com/aldotnet/examples/translate.aspx

    2006年6月14日 8:14
    モデレータ
  • trapemiya様

    いつも大変お世話になっております。

    お教え頂いたサイトで変換しますと下記のようになりました。

    Dim s As String
    For Each s In  Context.Request.Form.AllKeys
       If s.Contains("Button") Then
          Label1.Text = CType(FindControl(s), Button).Text
       End If
    Next s

    これをPage_Lordで使用しますとContainsは'String'のメンバーでは有りません。となります。何が違うのでしょうか?

     

    2006年6月14日 8:31
  • 確認ですが、.NET Framework 2.0 で開発されていますか?
    2006年6月14日 8:51
    モデレータ
  • ここでは文字列の中に"Button"という文字が含まれているかどうかを判定しているだけなので、そのような内容のプログラムを記述してもらえればOKです。

    プログラムの内容を少し解説すると、
    ・ボタンクリック時に、そのボタンのIDがブラウザから送られてくる
    ・そのため、Request.Formの中にあるボタンのIDを取り出す
    ・ボタンのIDからボタンオブジェクトを探して、そのTextプロパティを取り出す
    こんなことをやっています。

    ブラウザからどういった形でリクエストがあがってくるかは、もとのASP.NETのページの内容によって変わってきます。
    そのため、同じような処理をするにしても、ページ毎に作成されるHTMLを解析してうまくデータを取り出せるようなプログラムを記述しないといけません。
    このプログラムがそのまま使えるとは思わないでくださいね。

    2006年6月14日 9:53
  • trapemiya様 どっとねっとふぁん様

    いつもお世話になっております。

    .NET Framework1.1で開発しております。

    >このプログラムがそのまま使えるとは思わないでくださいね。
    そのまま使えるものと思っておりました。すみません。

    プログラムに内容を理解し、私にできるかどうかわかりませんがチャレンジしてみます。

    いつもありがとうございます。

    2006年6月14日 23:24