Bonjour,
Dans une business application, j'ai souvent besoin d'ajouter un élément dans un datagrid. Par exemple si j'ai 4 points de ventes affichés dans mon datagrid, je peux vouloir en ajouter un cinquième....
J'ajoute le point de vente via une childWindow.
Le problème, c'est que quand je referme ma ChildWindow, le 5ème point de vente que je viens de créé n'apparait pas directement dans le datagrid. Je dois donc changer de page puis revenir sur mon datagrid pour constater qu'il est bien créé !
Voici le code:
Ma page appellante est" PointDeVentePage.xaml" qui comprend un bouton "btnAddPdv" qui ouvre ma childWindow "New_pointDeVente" et j' ajoute un Handler sur close de ma ChildWindow qui me ramènera dans la sub "NewPdv_Close"
dans ma ChildWindow, j'ai un bouton OK qui enregistre et ajoute une entité"GroupeUtilisateurTbl":
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub btnAddPdv_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Dim frm As New New_PointDeVente() AddHandler frm.Closed, AddressOf NewPdv_Close frm.Show() End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Private Sub OKButton_Click(ByVal sender As Object, ByVal e As RoutedEventArgs) Handles OKButton.Click Dim monPdv As New GroupeUtilisateurTbl 'ça c'est une entité "pointdevente" Dim ctx As New J_Context 'ça c'est mon datacontexte Try monPdv.GroupUtilName = Trim(txtName.Text) .... ctx.GroupeUtilisateurTbls.Add(monPdv) 'ici j'ajoute mon entité à mon contexte ctx.SubmitChanges(AddressOf callback_monPdvAdd, Nothing) 'pour être sur de ne pas retourner à ma fenêtre appelante avant que mon entité ne soit chargée, je fais un callback Catch ex As Exception Return End Try End SubPour ceux qui ont suivi jusqu'ici
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Private Sub callback_monPdvAdd(ByVal so As SubmitOperation) 'ici je fais des tests sans intérêt ' mais je fais un second callback qui se déclenche que quand ma submitOpération est terminée AddHandler so.Completed, AddressOf callback_ajoutFini End Sub Private Sub callback_ajoutFini(ByVal sender As System.Object, ByVal e As System.EventArgs) 'et seulement à ce moment ci, je reviens dans ma fenêtre appelante Me.DialogResult = True End Sub
je reviens dans:
Et donc: (les commentaires sont dans le code)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub NewPdv_Close(ByVal sender As System.Object, ByVal e As System.EventArgs) If sender.dialogresult Then 'j'ai rien de spécial à faire ici sauf de tenter de rafraichir mon domain datasource refreshPdvDataGrid() End If End Sub
Et c'est donc insuportable de devoir sortir de la page et revenir pour rafraichir le datagrid.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Private Sub refreshPdvDataGrid() 'à ce stade, je compte le nombre de points de ventes de mon domaineDatasource et ils ne sont que 4 (le 5ème que je viens de rajouté n'apparait pas) PointDeVenteDS.DomainContext.Load(CType(PointDeVenteDS.DomainContext, J_Context).GetGroupeUtilisateurTblQuery, LoadBehavior.RefreshCurrent, False) 'après le load, c'est inchangé !!!, toujours que 4 'et pourtant, si je fais Dim ctx As New J_Context ctx.Load(ctx.GetGroupeUtilisateurTblQuery, AddressOf cb_test, Nothing) End Sub Private Sub cb_test(ByVal lo As ServiceModel.DomainServices.Client.LoadOperation(Of GroupeUtilisateurTbl)) 'si je boque mon code ici, ma variable "lo" m'indique bien 5 entités End Sub
Quelqu'un peut-il me sauver ?
Merci d'avance
Partager