Bonjour tout le monde,

Alors voila :

J'utilise un 1er DGV (DGVChoixPertes) lequel affiche en colonne cachée (index = 0) l'Id de le perte et le nom visible par l'utilisateur, et sur l'évènement CellClick, l'affichage dans un 2ème DGV de lignes pouvant être modifiées par l'utilisateur.

Quand il clique sur une autre ligne de DGVChoixPertes, je stock dans un dictionnaire les lignes remplies (si il y en a) pour pouvoir les réafficher en cas de retour sur une ligne précédente.

Le soucis c'est qu'il ne me réaffiche pas les données saisies dans les cellules, il remet bien le même nombre de lignes mais vides...

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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Private Sub DGVChoixPerte_CellClick(ByVal sender As DataGridView, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _
                        Handles DGVChoixPerte.CellClick
        'Si le dico ne contient pas encore de référence à la perte choisie, on lui ajoute une nouvelle arraylist pour cette dernière
        If Not dico.ContainsKey(sender.SelectedCells(0).Value) Then
            dico.Add(sender.SelectedCells(0).Value, New ArrayList)
        End If
 
        'Stockage des lignes dans l'Arraylist du dico qui va bien
        CType(dico.Item(sender.SelectedCells(DGVPertes.Tag).Value), ArrayList).Clear()
        For Each row As DataGridViewRow In DGVPertes.Rows
            CType(dico.Item(sender.SelectedCells(DGVPertes.Tag).Value), ArrayList).Add(row)
        Next
 
        'On efface les lignes à l'écran
        DGVPertes.Rows.Clear()
 
        'Si l'Arraylist qui référence la perte choisie contient des lignes, on les affiche
        If CType(dico.Item(sender.SelectedCells(0).Value), ArrayList).Count > 0 Then
            Dim i As Integer = 0
            For i = 0 To i = CType(dico.Item(sender.SelectedCells(0).Value), ArrayList).Count - 1
                DGVPertes.Rows.Add(CType(dico.Item(sender.SelectedCells(0).Value), ArrayList).Item(i))
            Next
        End If
 
        'On tag la DataGridView pour le prochain passage
        DGVPertes.Tag = DGVChoixPerte.SelectedCells(0).Value
 
        'Rafraichissement du dataSource pour le choix de la sous-perte
        Dim newDataSource As New ArrayList
        For Each sp As SousPerte In listeSousPerte
            If sp.PerteId = sender.SelectedCells(0).Value Then
                newDataSource.Add(sp)
            End If
        Next
        ColumnSousPerte.DataSource = newDataSource
 
        'On ajoute une nouvelle ligne pour saisie utilisateur
        DGVPertes.Rows.Add()
        For Each c As DataGridViewCell In DGVPertes.Rows(DGVPertes.RowCount - 1).Cells
            If Not TypeOf c Is DataGridViewComboBoxCell Then
                c.Value = ""
            Else
                CType(c, DataGridViewComboBoxCell).Value = 0
            End If
        Next
    End Sub
Donc ma question est simple : Comment faire pour garder en mémoire les valeurs des cellules ?