ASP.NET - Error al intentar borrar registros

   
Vista:

Error al intentar borrar registros

Publicado por Alejandra (2 intervenciones) el 04/05/2009 21:11:56
Hola... mi problema es el siguiente:

Tengo un GridView donde me muestra todos los registros de una tabla X...

Yo le agregue en las propiedades del Grid "Permitir Eliminar" y "Permitir Editar", cuando voy a editar los campos de algun registro me lo hace bien (le doy click a "Edit" al lado del campo y eso lo hace perfecto... pero cuando voy a eliminar que le doy click en "Delete" al lado del campo me aparece el siguiente error:

Must declare the variable '@cedula'.

Y en el codigo tengo el siguiente comando:

<Columns>
<asp:CommandField ButtonType="Image" CancelImageUrl="~/images/equis.gif"
DeleteImageUrl="~/images/papelera.gif" EditImageUrl="~/images/libretica.gif"
ShowDeleteButton="True" ShowEditButton="True"
UpdateImageUrl="~/images/disquette.gif" />
<asp:BoundField DataField="cedula" HeaderText="cedula"
SortExpression="cedula" />
<asp:BoundField DataField="nombre" HeaderText="nombre"
SortExpression="nombre" />
<asp:BoundField DataField="apellido" HeaderText="apellido"
SortExpression="apellido" />
</Columns>

**************

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:pruebaWebConnectionString %>"
DeleteCommand="DELETE FROM eval WHERE (cedula = @cedula)"

<DeleteParameters>
<asp:Parameter Name="cedula" />
</DeleteParameters>

Los campos de la tabla son cedula, nombre, apellido, el campo cedula es un primary key, que estoy haciendo mal ????

si le quito el @ donde esta el query --> DeleteCommand="DELETE FROM eval WHERE (cedula = @cedula)" si le quito el @ a cedula o sea si lo coloco de esta forma:

DeleteCommand="DELETE FROM eval WHERE (cedula = cedula)"

Me hace el delete pero borra todos los registros y necesito que borre solo el registro que le estoy dando click en delete.

Gracias por su ayuda....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Error al intentar borrar registros

Publicado por Iván Cujia (1 intervención) el 12/08/2009 15:24:27
Debes definir en la propiedad DataKeyNames del GridView, los campos indices de la tabla, en este caso Cedula por tanto te quedaria DataKeyNames="Cedula"

en cuanto al comando debe dejar la @ ya te define que es una varible, tu consulta te borra tu registro por que pones una condicion que selecciona todos los registro, Cedula siempre va ser igual a Cedula, por que es mismo campo, es como si le dijeras, Borrame todos los registro donde 1 se igual a 1, esa condicion siempre se cumple, por eso te elimina todo los registro, mietras que que si tú dice cedula=@cedula, estas comparando el campo cedula con la variable cedula, por lo general es es selectedValue del GridView.

por lo que tu consulta quedaria asi:

DeleteCommand="DELETE FROM eval WHERE cedula = @cedula"

<DeleteParameters>
<asp:Parameter Name="cedula" Type="Char" />
</DeleteParameters>

Así te deberia funcionar.

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar