asp.net - e.CommandArgument for asp button no funciona
aspbutton (4)
Estoy desarrollando una aplicación asp.net usando C #. Creé una página .aspx y coloqué cuatro botones en diferentes ubicaciones de la página. En el lado del servidor, quiero usar solo un evento de clic para los cuatro botones.
Aquí está mi código:
página 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" />
página cs
protected void allbuttons_Click(object sender, EventArgs e)
{
//Here i want to know which button is pressed
//e.CommandArgument gives an error
}
@Tejs tiene razón en su comentario, parece que quieres algo como esto:
protected void allbuttons_Click(object sender, EventArgs e)
{
var argument = ((Button)sender).CommandArgument;
}
En realidad, no es necesario que pase el documento de comando para saber qué botón presionó. Puede obtener la ID del botón como a continuación:
string id = ((Button)sender).ID;
Puede asignar texto de comando a sus botones de la siguiente manera:
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;
}
}
Utilizar
OnCommand =
y
protected void allbuttons_Click(object sender, CommandEventArgs e) { }