net index gridview1_rowcommand data asp asp.net linkbutton

asp.net - index - LinkButton CommandName y CommandArgument



rowcommand gridview asp net (4)

Tengo problemas para entender CommandName y CommandArgument asociados con un LinkButton ASP.NET. He leído este artículo - http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.commandname.aspx y otras preguntas en este sitio.

Supongo que mis preguntas son: ¿qué es exactamente un "comando"? ¿Puede un CommandName básicamente ser cualquier texto? Veo "Ordenar" y "Enviar" como ejemplos. Y en cuanto a CommandArgument , esto solo se usa para especificar el tipo de "Comando". ¿Correcto? Muchas gracias por su ayuda.


Como dice Freefaller, tanto CommandName como CommandArgument son solo valores de cadena.

La razón por la que hay muchas veces, sin embargo, un evento de clic solo activará el clic de un botón y usted manejará ese botón (s) específicamente.

Un buen ejemplo del uso de los botones de comando es que imagina que tiene filas de datos, cada fila tiene la capacidad de ver, editar o eliminar.

En lugar de codificar cada uno por separado, puede usar las partes de Command y hacer que cada fila tenga el documento de CommandArgument del ID de registro y el documento de CommandArgument como la acción que desea realizar; ViewRec, EditRec and DelRec` por ejemplo:

protect void cmd_Command(object sender, CommandEventArgs e) { // Example, Redirect to page with action response.redirect(string.format("~/record.aspx?id={0}&action={1}", e.commandArgument, e.CommandName); }

Usando este ejemplo como concepto, muestra que solo tienes una sección de código para manejar múltiples opciones y, por lo tanto, solo un lugar para mantener, etc.


Un Command puede ser cualquier cosa que quieras que sea.

La idea básica es que si dices que tienes un repetidor, y en ese repetidor tienes múltiples opciones, puedes darle a cada opción un CommandName diferente. El CommandArgument se basaría en el identificador único de la línea.

Luego, en la respuesta posterior, puede comprobar qué CommandName se disparó y, según ese uso, el valor en el CommandArgument

Por ejemplo, el marcado podría ser algo así como ...

<asp:Repeater runat="server" id="myRepeater"> <ItemTemplate> <div> <asp:LinkButton runat="server" id="lnkEdit" CommandName="edit" CommandArgument="<%#Container.DataItem.Id%>" Text="Edit" OnClick="OnClickHandler" /> <asp:LinkButton runat="server" id="lnkDelete" CommandName="delete" CommandArgument="<%#Container.DataItem.Id%>" Text="Delete" OnClick="OnClickHandler" /> </div> </ItemTemplate> </asp:Repeater>

Luego, su manejador posterior al paquete podría verificar para ver en cuál se hizo clic ...

Protected Sub OnClickHandler(ByVal sender As Object, ByVal e As EventArgs) Dim lnk as LinkButton = CType(sender,LinkButton) Select Case lnk.CommandName Case "edit" EditItem(lnk.CommandArgument) Case "delete" DeleteItem(lnk.CommandArgument) End Select End Sub


CommandName es lo que realmente hace cuando se desencadena el evento y el CommandArgument y, por supuesto, es el argumento relacionado con el proceso. Tiene más sentido si utiliza botones de enlace en repetidores o elementos de lista similares. En ese caso, su CommandName puede ser "Delete", "Edit", "Publish" y para este proceso necesita saber con qué registro está trabajando y ''CommandArgument'' es su hombre. En este caso, puede asignarle el ID o la coma. Datos separados a procesar.

Por supuesto, también puede usar esto para combinar eventos similares. "Ordenar" es un gran ejemplo para esto, ya que puede dar ''CommandArgument'' como "Precio asc", "Fecha asc", "Fecha desc" y todos los botones de enlace activan el evento.


CommandName puede ser cualquier cadena que sí. ¡Pero cuidado! ASP.NET tratará ciertas cadenas de una manera especial. Por ejemplo, si tiene un control Button en una columna de GridView con un CommandName de "delete", se generará el evento OnDeleting y el CommandArgument se configurará en el índice de la fila de GridViewRow que está el botón. De lo contrario, como otros han publicado puede usar CommandName y CommandArgument sin embargo, se adapta mejor a sus circunstancias.

por lo general, establecerá CommandArgument para que sea el índice de fila del contenedor primario del control durante el enlace, y el CommandName sea ​​algo significativo para su dominio de aplicación, como "UpdateFoo". A continuación, utilice esto en el controlador de eventos OnRowCommand para determinar en qué botón se ha hecho clic y, por lo tanto, en qué lógica de negocios ejecutar.