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