20

C#を使用してasp.netアプリケーションを開発しています。.aspxページを作成し、ページのさまざまな場所に4つのボタンを配置しました。サーバー側では、4つのボタンすべてにワンクリックイベントを使用したいと思います。

これが私のコードです:

aspxページ

<asp:Button ID="Button1" runat="server" CommandArgument="Button1" onClick = "allbuttons_Click" />
<asp:Button ID="Button2" runat="server" CommandArgument="Button2" onClick = "allbuttons_Click" />
<asp:Button ID="Button3" runat="server" CommandArgument="Button3" onClick = "allbuttons_Click" />
<asp:Button ID="Button4" runat="server" CommandArgument="Button4" onClick = "allbuttons_Click" />

csページ

protected void allbuttons_Click(object sender, EventArgs e)
{
    //Here i want to know which button is pressed
    //e.CommandArgument gives an error
}
4

4 に答える 4

41

@Tejs は彼のコメントで正しいです。次のようなものが必要なようです。

protected void allbuttons_Click(object sender, EventArgs e)
{
    var argument = ((Button)sender).CommandArgument;
}
于 2011-04-15T12:24:25.517 に答える
9

使用する

OnCommand = 

protected void allbuttons_Click(object sender, CommandEventArgs e) { }
于 2011-04-15T12:29:21.633 に答える
2

実際には、どのボタンを押したかを知るために CommandArgument を渡す必要はまったくありません。以下のようにボタンのIDを取得できます。

string id = ((Button)sender).ID;
于 2011-04-15T21:06:11.323 に答える
1

次のように、コマンド テキストをボタンに割り当てることができます。

protected void allbuttons_Click(Object sender, CommandEventArgs e) {
    switch(e.CommandName) {
        case "Button1":
            Message.Text = "You clicked the First button";
            break;
        case "Button2":
            Message.Text = "You clicked the Second button";
            break;
        case "Button3":
            Message.Text = "You clicked Third button";
            break;
        case "Button4":
            Message.Text ="You clicked Fourth button";
            break;
    }
}
于 2011-04-15T12:39:20.390 に答える