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...
Donc ma question est simple : Comment faire pour garder en mémoire les valeurs des cellules ?
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
Partager