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"

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
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
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 Sub
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
Pour ceux qui ont suivi jusqu'ici
je reviens dans:
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 donc: (les commentaires sont dans le code)
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
Et c'est donc insuportable de devoir sortir de la page et revenir pour rafraichir le datagrid.

Quelqu'un peut-il me sauver ?

Merci d'avance