Ciao,
nel mio programma ho 3 gridview che prendono i dati da altrettante tabelle di un databse collegato tramite wizard al progetto.
Vorrei che, alla pressione del tasto "Canc", il record venisse eliminato non solo dalla datagridview ma proprio dal database.
Ho provato a cercare in giro per internet ma temo di non aver capito molto.
Comunque l'idea (sperando che abbia senso) è: sfruttare l'evento UserDeletingRow -> farmi dire quale riga l'utente sta cancellando -> utilizzare table.Rows.Remove per eliminarla.
Posto il mio tentativo:
codice:
Private Sub RisultatiPrimaDataGridView_UserDeletingRow(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowCancelEventArgs) Handles RisultatiPrimaDataGridView.UserDeletingRow
Dim riga As DataGridViewRow = e.Row
Dim nome As String = riga.Cells(0).Value
MsgBox(nome)
Dim adapter_ris_prima = New golfDataSetTableAdapters.RisultatiPrimaTableAdapter
Dim table As DataTable = GolfDataSet.Tables("RisultatiPrima")
Dim v = From o In table
Where o.Item("Nome") = nome
Select o
table.Rows.Remove(v(0))
MsgBox("ciao")
adapter_ris_prima.Update(GolfDataSet)
MsgBox("fin qui ok")
GolfDataSet.AcceptChanges()
End Sub
Dai messagebox di controllo che ho messo pare che si pianti al momento di salvare i cambiamenti, cioè su
codice:
GolfDataSet.AcceptChanges()
In particolare l'eccezione è questa
codice:
IndexOutOfRange Exception was unhandled
Index 0 is either negative or above rows count.
Spero di aver fornito tutte le informazioni necessarie e...aspetto suggerimenti!