ASP.NET - ctualizar Gidiew

   
Vista:

ctualizar Gidiew

Publicado por Kraipo (7 intervenciones) el 03/10/2014 23:23:47
Hola, tengo un gridview que muestra las categorias, en el pie del gridview tengo una caja de texto y un boton que al hacer click sobre el primero comprueba si el nombre de la categoria existe, si devuelve que si cancelar la insercion y avisa en una label, todo esto funciona bien, el problema es que quiero hacer lo mismo al actualizar dentro del gridview, que no se repita el nombre de la categoria, he puesto el siguiente codigo en el GridView1_RowUpdating, pero no funciona, puedes cambiar el nombre a uno que ya existe.

Using CN As New SqlConnection(Me.SqlDataSource1.ConnectionString)
Dim nombre As String = CType(GridView1.Rows(e.RowIndex).Cells(1).FindControl("TextBox1"), TextBox).Text
Dim cmd As New SqlCommand("SELECT Count(*) " & "FROM Categorias " & "WHERE Nombre = @Nombre", CN)
CN.Open()
cmd.Parameters.AddWithValue("@Nombre", nombre)

Dim i As Integer
i = CInt(cmd.ExecuteScalar())
If i > 0 Then
Label2.Text = "La categoria " & nombre & " ya existe."
Label2.ForeColor = Drawing.Color.Red
Exit Sub
End If
End Using

Gracias y un saludo.
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

ctualizar Gidiew

Publicado por Khristian (335 intervenciones) el 27/10/2014 17:57:05
En el row updating se te pasan algunos parametros.... en uno de esos paremetros, puedes acceder al valor antiguo y al valor nuevo, para cada una de las columnas que estas editando.

Antes de modificar, tomas el valor nuevo del campo y haces la misma comprebacion que usas para el caso de insertar uno registro nuevo.

Si existe, ese valor nuevo, cancelas la modificacion. tienes una propiedad para eso.

En en el evento row updating dale una mirada a lo que te trae el parametro e

e.OldValues
e.NewValues
e.Cancel


Ahora....... yo lo haria mas facil....

Crea un indice de registro unico para ese campo en tu base de datos.
O sea, si no es clave primaria, dejalo como indice de valor unico.

Valor Unico: Solo existirá uno.
Es lo que entiendo que quieres prevenir....

Asi, cuando insertes o cuando edites, en los eventos row xxxx_ting o xxxx_ted (En uno de ellos, no recuerdo cual), puedes verificar la cantidad de registros afectados, por lo que si es 0, puedes acceder incluso al mensaje del error y su codigo.

Entonces, si el codigo del error es de valor duplicado, simplemente no se va a efectuar la insercion o modificacion, por lo que solo te queda advertir del error.

Es importante, probar y controlar el error para el caso valor duplicado, asi no lanzas el mismo mensaje para cualquier error que se produzca.


Espero te sirva.

Saludos
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

ctualizar Gidiew

Publicado por Kraipo (7 intervenciones) el 02/11/2014 02:26:28
Hola, gracias por tu respuesta, lo probare y te digo el resultado.
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

ctualizar Gidiew

Publicado por Kraipo (7 intervenciones) el 16/12/2014 01:26:00
Hola, lo probe y mil gracias, funciona bien, he tardado en responder ya que no encontraba donde lo había subido, pero lo dicho mil gracias, bien explicado y muy efectivo, espero que lo leas y te llege.
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