Tengo una página con un datagrid y dos botones, uno para añadir filas al
grid y otro para borrar filas del grid.
Código Page_load:
Dim cadenaconexion As String = "..."
Dim Conexion As SqlConnection= New SqlConnection(cadenaconexion)
Dim CadenaSql As String ="SELECT * FROM FicherosContrato "
Dim adap As SqlDataAdapter = New SqlDataAdapter(CadenaSql, Conexion)
DS = New DataSet()
adap.Fill(DS, "FicherosContrato")
Código Botón de añadir:
Conexion.Open()
Dim fila as DataRow = DS.Tables("FicherosContrato").NewRow()
fila("...") = Relleno los valores de la fila
If DS.Tables("FicherosContrato").Rows.Count = 0 Then
DS.Tables("FicherosContrato").Rows.Add(fila)
Else
DS.Tables("FicherosContrato").Rows.InsertAt(fila,
DS.Tables("FicherosContrato").Rows.Count)
End If
adap.Update(DS, "FicherosContrato")
fila.AcceptChanges()
DS.Tables("FicherosContrato").AcceptChanges()
Conexion.Close()
dgr.DataSource = DS.Tables("FicherosContrato")
dgr.DataBind()
Código del botón de borrar:
Conexion.Open()
Dim fila as DataRow = DS.Tables("FicherosContrato").Rows(e.Item.ItemIndex)
fila.Delete()
adap.Update(DS, "FicherosContrato")
DS.Tables("FicherosContrato").AcceptChanges()
Conexion.Close()
dgr.DataSource = DS.Tables("FicherosContrato")
dgr.DataBind()
Si pulso el botón de añadir y a continuación el de borrar sobre la fila que
acabo de añadir me da un error de Infracción de concurrencia. Si voy a otra
página y vuelvo, ya puedo eliminar el registro recién añadido sin problemas.
¿Por qué me da este error de concurrencia? ¿Cómo puedo evitarlo? ¿Qué esto
haciendo mal?
Leer las respuestas