ボタンが押されたときの処理は、以下のようにButtonコントロールのOnClickに起動させたいメソッドの名前を記述します。
-------------------------------------------------------
<%@ Page language="c#" %>
<html>
<head>
<script runat=server>
void button1_Click(Object sender, EventArgs e)
{
Message.Text="ボタン1がクリックされました。";
}
void button2_Click(Object sender, EventArgs e)
{
Message.Text="ボタン2がクリックされました。";
}
</script>
</head>
<body>
<form runat="server">
<asp:Button id="Button1" Text="ボタン1" OnClick="button1_Click" runat="server"/>
<asp:Button id="Button2" Text="ボタン2" OnClick="button2_Click" runat="server"/>
<br />
<asp:label id="Message" runat="server"/>
</form>
</body>
</html>
-------------------------------------------------------
上記のように複数のボタンが同じような処理を行う場合、メソッドを1つにまとめてしまうこともできます。
-------------------------------------------------------
<%@ Page language="c#" %>
<html>
<head>
<script runat=server>
void button_Click(Object sender, EventArgs e)
{
Message.Text=((Button)sender).Text + "がクリックされました。";
}
</script>
</head>
<body>
<form runat="server">
<asp:Button id="Button1" Text="ボタン1" OnClick="button_Click" runat="server"/>
<asp:Button id="Button2" Text="ボタン2" OnClick="button_Click" runat="server"/>
<br />
<asp:label id="Message" runat="server"/>
</form>
</body>
</html>
-------------------------------------------------------
しかし、どのボタンが押されたかを、必ずボタンに表示されているTextで区別しなければいけないとしたら、プログラムがわかりにくいものになってしまいますね。
そのような場合にはコマンドボタンを利用しましょう。
ブラウザ上には表示されないCommandNameを評価して、処理を切り分けることが可能です。また、引数をCommandArgumentとして受け取ることができます。
-------------------------------------------------------
<%@ Page language="c#" %>
<html>
<head>
<script runat=server>
void CommandButton_Click(Object sender, CommandEventArgs e)
{
Message.Text=e.CommandName + e.CommandArgument + "がクリックされました。";
}
</script>
</head>
<body>
<form runat="server">
<asp:Button id="Button1"
Text="ボタン1"
CommandName="コマンド名1"
CommandArgument="コマンド引数1"
OnCommand="CommandButton_Click"
runat="server"/>
<asp:Button id="Button2"
Text="ボタン2"
CommandName="コマンド名2"
CommandArgument="コマンド引数2"
OnCommand="CommandButton_Click"
runat="server"/>
<br />
<asp:label id="Message" runat="server"/>
</form>
</body>
</html>
-------------------------------------------------------
ボタンをコマンドボタンにするには、OnClickのかわりにOnCommandを利用します。
このとき、処理に対応するメソッドの第2引数がCommandEventArgsになることに注意しましょう。
ボタンとコマンドボタンは同じクラスなので、次のような記述もできちゃいますが、プログラムがわかりにくくなるのでやめたほうがいいでしょうね(^^;
-------------------------------------------------------
<%@ Page language="c#" %>
<html>
<head>
<script runat=server>
void button_Click(Object sender, EventArgs e)
{
Message.Text=((Button)sender).CommandName + ((Button)sender).CommandArgument + "がクリックされました。";
}
</script>
</head>
<body>
<form runat="server">
<asp:Button id="Button1"
Text="ボタン1"
CommandName="コマンド名1"
CommandArgument="コマンド引数1"
OnClick="button_Click"
runat="server"/>
<asp:Button id="Button2"
Text="ボタン2"
CommandName="コマンド名2"
CommandArgument="コマンド引数2"
OnClick="button_Click"
runat="server"/>
<br />
<asp:label id="Message" runat="server"/>
</form>
</body>
</html>
-------------------------------------------------------
あおい情報システム株式会社 小野修司(どっとねっとふぁん)