Ciao a tutti, ho un datagrid su una pagina aspx che mi permette di inserire, modificare e cancellare le righe di un ordine a cliente. Quando inserisco una riga e la confermo questa mi viene salvata sulla tabella anche se non salvo tutto l'ordine. Il problema sorge quando ad esempio ho 3 righe e devo cancellare quella in mezzo. A video ne rimangono due ma la numerazione del campo riga a database è errato infatti la prima riga visualizzata ha come campo NrRiga=1 mentre la seconda riga visualizzata ha come campo NrRiga=3. Avrei bisogno perciò di rinumerare le righe ogni volta che ne cancello una ma essendo il campo NrRiga una chiave primaria mi da errore e mi dice che non è possibile inserire una chiave duplicata. Riesco a fare una cosa simile o sto perdendo solo il mio tempo?
Questa è la procedura che ho sviluppato:
codice:
Public Function RinumeraRighe() As Boolean
Dim oConn As System.Data.SqlClient.SqlConnection
Dim oComm As System.Data.SqlClient.SqlCommand
Dim oReader As System.Data.SqlClient.SqlDataReader
Dim sSQL As String
Dim j As Integer = 0
sSQL = "SELECT * FROM RigheOrdOnLine WHERE Agente='" & AgenteLog.Text + "' AND NrOrdine='" & m_NrOrdine.Text & "'"
oConn = New System.Data.SqlClient.SqlConnection(sConn)
oConn.Open()
oComm = New System.Data.SqlClient.SqlCommand(sSQL, oConn)
oReader = oComm.ExecuteReader()
'Assegno il valore recuperato dalla query
While oReader.Read()
j = j + 1
'Prepare SQL string
Dim commandString As New System.Text.StringBuilder()
commandString.Append("UPDATE RigheOrdOnLine SET ")
commandString.Append("NrRiga='" & j & "'")
'Send to DB and execute
performDBOperation(commandString.ToString)
End While
' Chiudo il reader.
oReader.Close()
' Chiudo la connessione.
oConn.Close()
ReadRigheOrdOnLine()
Return True
End Function
Grazie ciao