Ho creato una ListView (nella form "Padre") che carica i dati da un datacontext di LINQ,
ho creato una form figlio a cui passo un codice che carica i dati in campi di dettaglio relativi a quel codice,
quando li salvo e torno indietro mi fa vedere le modifiche sulla listview.
invece se creo un nuovo elemento per la tabella (sempre con LINQ) ed eseguo insertOnSubmit, la ListView non mi si aggiorna. cosa posso fare?
il codice è simile a quello dell'esempio nella mia lezione.
Come si fa a "refreshare" il contenuto di una listview?
esiste qualche altro modo per creare nuove righe?
Per essere precisi io ho fatto (su OnClick del pulsante Nuovo):
Dim mydetfrm As New MiaFormDet
mydetfrm.MioRecord = New TabTipi
mydetfrm.MioRecord.Flag = "M"
mydetfrm.MioRecord.Codice = ""
mydetfrm.MioRecord.Descrizione = "Inserire una descrizione"
If mydetfrm.ShowDialog = True Then
Dim myDataProvider As ObjectDataProvider = DirectCast(Me.Resources("MsSqlDbDataContextDS"), ObjectDataProvider)
Dim myDataContext As MsSqlDbDataContext = DirectCast(myDataProvider.ObjectInstance, MsSqlDbDataContext)
myDataContext.TabTipis.InsertOnSubmit(mydetfrm.MioRecord)
Try
myDataContext.SubmitChanges()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End If
Dove "MioRecord" è una classe interna a mydetform che ha la struttura di una riga della tabella tipi di LINQ (infatti non ha la "s" in fondo
)
La routine di modifica dettaglio è praticamente identica (su click del pulsante modifica dettaglio):
Dim myDataProvider As ObjectDataProvider = DirectCast(Me.Resources("MsSqlDbDataContextDS"), ObjectDataProvider)
Dim myDataContext As MsSqlDbDataContext = DirectCast(myDataProvider.ObjectInstance, MsSqlDbDataContext)
Dim mydetfrm As New MiaFormDet
mydetfrm.MioRecord = (From t In myDataContext.TabTipis Where t.Codice.Equals(ListaElementi.SelectedValue)).First
If mydetfrm.ShowDialog = True Then
Try
myDataContext.SubmitChanges()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End If
Dove "ListaElementi" è la listview della form padre (ho notato inoltre che in VB posso omettere la clausola SELECT in LINQ)
La form figlio mette i valori dal video alla classe MioRecord e infatti quando esco che ho premuto "OK" sulla form figlio, se avevo premuto "MODIFICA" mi si aggiorna correttamente anche la ListView mentre invece se avevo premuto "NUOVO" non mi si aggiorna e devo chiudere e riaprire la finestra per vedere le modifiche.
Come posso fare?
Grazie