Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Evento RowCommand en un gridView

820 views
Skip to first unread message

Carmelo J. Morales Muñoz

unread,
Jul 3, 2008, 6:16:45 PM7/3/08
to
¡hola!

En este evento, necesito poder leer los valores de la fila en la que se ha
hecho click en el botón del comando. Puede alguien ayudarme?.

Jhonny Vargas P.

unread,
Jul 4, 2008, 11:19:31 AM7/4/08
to
Cuando declaras un GridView le das dices que la fuente de datos que pasarás
posee un identificador único... por ejemplo:

<asp:GridView ID="gvDetalle"
runat="server"
AutoGenerateColumns="False"
DataKeyNames="camID" >

....

</asp:GridView>


Luego deberías tener una columna que realice el Comando.
Ejemplo:

<asp:ButtonField CommandName="Modificar" Text="Modificar"
HeaderText="Acción" >

Cuando el usuario pulse este botón, automáticamente disparará el evento
"RowCommand" por lo tanto deberías tener algo como esto:

Protected Sub gvDetalle_RowCommand(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.GridViewCommandEventArgs) Handles
gvDetalle.RowCommand

...

End Sub


Para rescatar el ID o "detID" de la fila que pulsó el usuario el CLICK...
puedes hacer esto:
Dim ID As String =
Convert.ToString(gvDetalle.DataKeys(Convert.ToUInt32(e.CommandArgument)).Value)


Con ese ID, puedes consultar "tu tabla" y traer la información de al fila
pulsada.

Saludos,
Jhonny Vargas P.

"Carmelo J. Morales Muñoz" <carme...@hotmail.com> escribió en el mensaje
de noticias:F7DBA6DD-6675-4C5B...@microsoft.com...

Carmelo J. Morales Muñoz

unread,
Jul 4, 2008, 12:23:26 PM7/4/08
to
¡Hola!

Muchas gracias por responder,,, te comento a tus líneas:

> Cuando declaras un GridView le das dices que la fuente de datos que
> pasarás posee un identificador único... por ejemplo:
>
> <asp:GridView ID="gvDetalle"
> runat="server"
> AutoGenerateColumns="False"
> DataKeyNames="camID" >
>
> ....
>
> </asp:GridView>


Esto lo tengo Ok, sin problemas.


> Luego deberías tener una columna que realice el Comando.
> Ejemplo:
>
> <asp:ButtonField CommandName="Modificar" Text="Modificar"
> HeaderText="Acción" >


Esto también , sin problemas...

>
> Cuando el usuario pulse este botón, automáticamente disparará el evento
> "RowCommand" por lo tanto deberías tener algo como esto:
>
> Protected Sub gvDetalle_RowCommand(ByVal sender As Object, ByVal e As
> System.Web.UI.WebControls.GridViewCommandEventArgs) Handles
> gvDetalle.RowCommand
>


Bien, aqui es donde está el problema, yo he convertido tu instrucción a C#,
pero es lo mismo, y mi gridView se llama "GridView1". Aqui pongo mi línea:

String ID =
Convert.ToString(GridView1.DataKeys(Convert.ToUInt32(e.CommandArgument)).Value);


Pues bien, me da error de compilación,,, el error es:


Error 2 Non-invocable member 'System.Web.UI.WebControls.GridView.DataKeys'
cannot be used like a method. C:\Users\Carmelo\Documents\Visual Studio
2008\Projects\gestionagricola\gestionagricola\invernaderos\MantenimientoInvernaderos.aspx.cs 74 56 gestionagricola


No tengo idea que puede ser.... lo tengo como he visto algún ejemplo y como
me comentas... ¿Puedes ayudarme?.


Pongo también el grid en html por si sirve de algo:


<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AllowSorting="True" AutoGenerateColumns="False"
CellPadding="4"
DataKeyNames="Id" DataSourceID="SqlDataSource1"
ForeColor="#333333"
GridLines="None" onrowcommand="GridView1_RowCommand">
<FooterStyle BackColor="#1C5E55" Font-Bold="True"
ForeColor="White" />
<RowStyle BackColor="#E3EAEB" />
<Columns>
<asp:CommandField CancelText="Cancelar"
DeleteText="Borrar" EditText="Editar"
ShowDeleteButton="True" ShowEditButton="True"
UpdateText="Actualizar" />
<asp:BoundField DataField="Id" HeaderText="Id"
InsertVisible="False"
ReadOnly="True" SortExpression="Id" Visible="False"
/>
<asp:BoundField DataField="Nombre" HeaderText="Nombre
del invernadero"
SortExpression="Nombre" />
<asp:BoundField DataField="Metros" HeaderText="Metros"
SortExpression="Metros" />
<asp:ButtonField CommandName="BORRAR" Text="Borrar" />
</Columns>
<PagerStyle BackColor="#666666" ForeColor="White"
HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True"
ForeColor="#333333" />
<HeaderStyle BackColor="#1C5E55" Font-Bold="True"
ForeColor="White" />
<EditRowStyle BackColor="#7C6F57" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>

Jhonny Vargas P.

unread,
Jul 4, 2008, 12:34:29 PM7/4/08
to
>>
>> Protected Sub gvDetalle_RowCommand(ByVal sender As Object, ByVal e As
>> System.Web.UI.WebControls.GridViewCommandEventArgs) Handles
>> gvDetalle.RowCommand
>>
>
>
> Bien, aqui es donde está el problema, yo he convertido tu instrucción a
> C#, pero es lo mismo, y mi gridView se llama "GridView1". Aqui pongo mi
> línea:
>
> String ID =
> Convert.ToString(GridView1.DataKeys(Convert.ToUInt32(e.CommandArgument)).Value);
>
>
> Pues bien, me da error de compilación,,, el error es:
>

Si mal no recuerdo para C# debes especificar el Tipo de dato... chequea
eso.. y lo otro si puedes debuguearlo y ver que valor... está tomando en
cada parte, por ejemplo:

e.CommandArgument

Convert.ToUInt32(e.CommandArgument)

GridView1.DataKeys(Convert.ToUInt32(e.CommandArgument)).Value


Saludos,
Jhonny Vargas P.

Carmelo J. Morales Muñoz

unread,
Jul 5, 2008, 5:21:31 AM7/5/08
to
¡Hola denuevo!


Ya está, un error muy tonto.... aquí está ya funcionando.....mil gracias!

if (e.CommandName == "BORRAR")
{
if (GridView1.DataKeys.Count > 0)
{
string ID =
Convert.ToString(GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)].Value);

}
else
{
// No hay clave primeria.
}


}

0 new messages