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?.
<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...
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>
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.
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.
}
}