Enlaces e información

Comenta lo que creas oportuno.


Otros posts
Creando controles en tiempo de ejecución
A vueltas con los calendarios

Borrando en un GridView

Escrito por Roberto M. Oliva en Julio 20th, 2005

Siguiendo con mis aprendizajes del GridView, me he propuesto aprender a borrar filas mediante el comando de borrado.
Basicamente lo que quiero conseguir es un boton de borrado en cada una de las lineas de una GridView, para asi, al pulsar el boton me borre la correspondiente.
Dentro del GridView, se a?ade una nueva columna del tipo: <asp:CommandField> y se le especifica el atributo: ShowDeleteButton=”True”. Esta es la parte grafica del funcionamiento:

<asp:GridView ID=”GridView2″ runat=”server” DataSourceID=”odsCorrecciones” AllowPaging=”True” AllowSorting=”True” AutoGenerateColumns=”False” width=”100%” PageSize=”3″ DataKeyNames=”id“>
<Columns>
<asp:BoundField HeaderText = “Fecha” SortExpression=”FechaMedida” DataField=”FechaMedida” ReadOnly=True />
<asp:BoundField HeaderText = “Medida” SortExpression=”Medida” DataField=”Medida” ReadOnly=True />
<asp:CommandField ButtonType=”Button” HeaderText=”Borrar” ShowDeleteButton=”True” />
</Columns>
</asp:GridView>

Por otro lado hay que especificar, de los datos seleccionados para mostrar el GridView, cual es el campo clave. Esto se hace con una propiedad del propio GridView: DataKeyNames. En mi caso he puesto: DataKeyNames = “id”.

Tambien hay que especificar en el objeto de datos asociado al GridView, cual es el metodo de borrado:

Class CAlumno

Public Shared Function BorrarCorreccion(ByVal original_id As Integer) As Boolean
Dim strSQL As String
strSQL = String.Format(”DELETE FROM CorreccionesDif WHERE id = {0}”, original_id)
Universatil.Database.CSQLServerData.DB.EjecutarSQL(strSQL)
Return True
End Function

End Class

Este metodo en mi caso es una funcion, ya que utilizo un ObjectDataSource. Podria ser, por ejemplo, un procedimiento almacenado, si utilizase un objeto de tipo SqlDataSource como proveedor de datos.
Bien, especificaremos cual es la funcion de borrado, dentro del objeto y los parametros que acepta:

[code]
<asp:ObjectDataSource ID=”odsCorrecciones” runat=”server” SelectMethod=”ListaCorreccionesAprendizaje”
TypeName=”CAlumno” DeleteMethod=”BorrarCorreccion”>

<DeleteParameters>
<asp:Parameter Type=”Int32″
Name=”original_id“></asp:Parameter>
</DeleteParameters>
</asp:ObjectDataSource>
[/code}

Como se puede ver, todo guarda relacion. Cuando se pulse el boton de borrado del GridView, se lanzara el metodo de borrado del objeto de datos, el cual es una funcion del objeto, la cual rebira el id de la fila seleccionada en el GridView.

Todo esto funciona bastante bien y ademas es bastante sencillo de implementar. Solo hay un pero, y es muy curioso. Si el campo clave de los datos del GridView es id, obligatoriamente el nombre del parametro de la funcion de borrado debe llamarse: original_id. Al igual que la definicion del parametro dentro del codigo del ObjectDataSource. Lo he marcado en todo el codigo anterior en negrita.
He probado a cambiar de nombre estos y no ha funcionado mas que de esta manera… seran cosas de la BETA???



Escriba un comentario

Dediquele un momento a comentar lo que piensa. Esta permitido usar HTML básico para formatear el escrito.

Comentarios de los lectores

Sea el primero en dejar un comentario.