none
Page_Load内にてクリックされたボタンを判別 RRS feed

  • 質問

  • Page_Load内にてクリックされたボタンを知りたいのですが、

    senderはXXX.aspxファイルとなっており、ボタンではありませんでした。

    ボタンを判別する方法はどうしたらよいでしょうか?

    2008年6月11日 11:25

回答

すべての返信

  • ViewState を使ってはいかがですか?

     

    2008年6月11日 13:47
  • よく考えてみたら ViewState ではうまくいかないですね。今日のところは

    こんな方法しか思いつきません。もっとスマートな方法を思いついたら連

    絡します。

     

    Code Snippet

    <%@ Page Language="C#" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <script runat="server">

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                return;
            }
            Label1.Text = ClickedButtonID.Value;
        }

    </script>

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>無題のページ</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <input type="hidden" name="ClickedButtonID" id="ClickedButtonID" value="" runat="server" />

            <asp:Button ID="Button1" runat="server" Text="Button1"
                onclientclick="BLOCKED SCRIPTSetButtonIDOnClick('Button1')" />
            <asp:Button ID="Button2" runat="server" Text="Button2"
                onclientclick="BLOCKED SCRIPTSetButtonIDOnClick('Button2')" />
            <asp:Button ID="Button3" runat="server" Text="Button3"
                onclientclick="BLOCKED SCRIPTSetButtonIDOnClick('Button3')" />
            <asp:Button ID="Button4" runat="server" Text="Button4"
                onclientclick="BLOCKED SCRIPTSetButtonIDOnClick('Button4')" />
            <asp:Button ID="Button5" runat="server" Text="Button5"
                onclientclick="BLOCKED SCRIPTSetButtonIDOnClick('Button5')" />
            <br />
            <asp:Label ID="Label1" runat="server"></asp:Label>   
        </div>
        </form>
    </body>
    </html>
    <script type="text/javascript">
        <!--
            var theForm = document.forms['form1'];
            if (!theForm)
            {
                theForm = document.form1;
            }
            function SetButtonIDOnClick(buttonID)
            {
                theForm.ClickedButtonID.value = buttonID;
            }
        //-->
    </script>

     

     

    2008年6月11日 14:46
  • 上のコードで、BLOCKED SCRIPT となっているところは、ジャワスクリプト: の英小文字です。

    セキュリティ対策のためか勝手に変換されれしまいます。

    2008年6月11日 14:49
  • こちらが参考になると思います。

     

    Page_LoadでPostBackの元になったボタン等の識別
    http://www.microsoft.com/japan/msdn/community/gdn/ShowPost-30003.htm

    2008年6月11日 15:05
    モデレータ
  • terapemiya さん>

     

    参考になります。有難うございます。もっとスマートな方法を思いついたら・・・とか書きましたが、

    自分が考えるまでもなかったようです。(汗)

    2008年6月12日 5:29
  • リンク先の方法を使用して解決いたしました。

    trapemiyaさん、SurferOnWwwさんどうもありがとうございました。

    2008年6月13日 6:49