Bonsoir,
J’aurais besoin d’un peu d’aide (lien ou autre) pour me dépatouiller de mon problème !
J’utilise EF 4.1.0 pour accéder à une base SQL Server, j’ai crée mon model et j’aimerais binder une requête sur un DGV
Définition du context + variables :
Je charge le bindingsourceCode:
1
2 Dim ctx As New PhilaEntities ' fermé à la fermeture du Form par "ctx.Dispose()" Dim CivToDelete As Civilite ' utilisé pour suppression directe sur ligne du DGV
Quelle est la meilleure solution pour « charger » le résultat d’une requete, faire un list(of ) ou un ObjectResult(Of ) ??Code:
1
2 ctx.Civilites.Load() CiviliteBindingSource.DataSource = ctx.Civilites.Local
J’ai un bouton save
Une fonction pour supprimer directement depuis la ligne du DGVCode:
1
2
3
4
5
6
7 CiviliteDataGridView.EndEdit() CiviliteBindingSource.EndEdit() Try ctx.SaveChanges() Catch ex As Exception MessageBox.Show("erreur dans le savechange = " & e.ToString) End Try
Code:
1
2
3
4
5
6
7
8
9
10
11
12 Private Sub CiviliteDataGridView_UserDeletedRow(sender As Object, e As System.Windows.Forms.DataGridViewRowEventArgs) Handles CiviliteDataGridView.UserDeletedRow If True Then If CivToDelete IsNot Nothing Then ctx.Civilites.Remove(CivToDelete) CivToDelete = Nothing End If End If End Sub Private Sub CiviliteDataGridView_UserDeletingRow(sender As Object, e As System.Windows.Forms.DataGridViewRowCancelEventArgs) Handles CiviliteDataGridView.UserDeletingRow CivToDelete = TryCast(CiviliteBindingSource.Current, Civilite) End Sub
Et un bouton delete
Résultats :Code:
1
2
3 If MessageBox.Show("Etes vous sûr de vouloir supprimer cette ligne ?", "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then CiviliteBindingSource.RemoveCurrent() End If
- Ajouts / modifs : pas de pb
- si je supprime une ou plusieurs lignes directement sur le DGV puis save : pas de pb
- si je sélectionne une ligne sur le DGV et que je clique sur delete, la ligne se supprime du DGV mais le save ou ne remplit pas sa fonction ou me génère une erreur System.EventArgs
Bref tout conseil sera le bienvenu !
Bertrand