Bonjour tout le monde.
J'ai un bug que je ne comprends pas...
C'est quelque chose qui marche bien plusieurs fois puis après une action précise, ça ne marche plus ^^.
Jetez d'abord un oeil à la pièce jointe (gui.jpg). Il s'agit d'un formulaire listant les différents devices (gsm, laptop et carte vpn) en possession d'un user. Il permet également d'en faire la gestion. (Formulaire qui s'intègre dans une application de user management).
Voici une sub qui est appelée lors de l'event CheckedChanged des RadioButton en haut de la form (cfr. pièce jointe).
Au load de la form, j'initialise les radiobutton avec
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 Private Sub InitGroupBox(ByVal device As String) Select Case device Case "rbGsm" dgvDevice.DataSource = Nothing dgvDevice.DataSource = user.Gsms dgvDevice.Columns("SimCard").Visible = False gbDelDevice.Text = "Retirer un gsm de ce user" lblDelDevice.Text = "Liste des gsm's de ce user" cbDelDevice.DataSource = Nothing cbDelDevice.DisplayMember = "Imei" cbDelDevice.ValueMember = "Imei" cbDelDevice.DataSource = user.Gsms gbAddDevice.Text = "Attribuer un gsm à ce user" lblAddDevice.Text = "Liste des gsm's disponibles" cbAddDevice.DataSource = Nothing cbAddDevice.DisplayMember = "Imei" cbAddDevice.ValueMember = "Imei" cbAddDevice.DataSource = GsmDAO.GetFreeGsms() gbEditDevice.Text = "Modifier un gsm de ce user" lblEditDevice.Text = "Liste des gsm's de ce user" cbEditDevice.DataSource = Nothing cbEditDevice.DisplayMember = "Imei" cbEditDevice.ValueMember = "Imei" cbEditDevice.DataSource = user.Gsms Case "rbLaptop" dgvDevice.DataSource = user.Laptops gbDelDevice.Text = "Retirer un laptop de ce user" lblDelDevice.Text = "Liste des laptops de ce user" cbDelDevice.DataSource = Nothing cbDelDevice.DisplayMember = "Serial" cbDelDevice.ValueMember = "Serial" cbDelDevice.DataSource = user.Laptops gbAddDevice.Text = "Attriber un laptop à ce user" lblAddDevice.Text = "Liste des laptops disponibles" cbAddDevice.DataSource = Nothing cbAddDevice.DisplayMember = "Serial" cbAddDevice.ValueMember = "Serial" cbAddDevice.DataSource = LaptopDAO.GetFreeLaptops() gbEditDevice.Text = "Modifier un gsm de ce user" lblEditDevice.Text = "Liste des laptops de ce user" cbEditDevice.DataSource = Nothing cbEditDevice.DisplayMember = "Serial" cbEditDevice.ValueMember = "Serial" cbEditDevice.DataSource = user.Laptops Case "rbVpn" dgvDevice.DataSource = user.Vpns gbDelDevice.Text = "Retirer un carte vpn de ce user" lblDelDevice.Text = "Liste des cartes vpn de ce user" cbDelDevice.DataSource = Nothing cbDelDevice.DisplayMember = "Serial" cbDelDevice.ValueMember = "Serial" cbDelDevice.DataSource = user.Vpns gbAddDevice.Text = "Attribuer une carte vpn à ce user" lblAddDevice.Text = "Liste des cartes vpn disponibles" cbAddDevice.DataSource = Nothing cbAddDevice.DisplayMember = "Serial" cbAddDevice.ValueMember = "Serial" cbAddDevice.DataSource = VpnDAO.GetFreeVpns() gbEditDevice.Text = "Modifier une carte vpn de ce user" lblEditDevice.Text = "Liste des cartes vpn de ce user" cbEditDevice.DataSource = Nothing cbEditDevice.DisplayMember = "Serial" cbEditDevice.ValueMember = "Serial" cbEditDevice.DataSource = user.Vpns End Select End Sub
Ce qui me pose problème ne concerne que les gsm's (rien n'est encore implémenté pour les autres devices). Cela marche très bien quand j'ajoute un gsm. Par contre, quand je retire un gsm du user, le gsm disparait bien du datagridview et l'update DB est correctement effectué mais il y a un manifestement un problème (voir pièce jointe prob.jpg). C'est pourtant le même code qui est exécuté à chaque fois.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Private Sub frmDevices_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load rbGsm.Checked = True End Sub
Pourquoi est-ce que lors de la suppression, il ne m'affiche plus la liste encore existante ?
De plus, lorsque je clique sur le record du DataGridView, l'imei du gsm s'affiche bien dans la ComboBox. Il a donc bien la liste en DataSource. Mais lorsque je déroule la ComboBox, il y a toujours "UserManagement.Gsm" qui s'affiche plutot que la valeur attendue.
Bref, c'est la première fois que je travaille vraiment avec mes propres objets et je suis un peu perdu sur la manière de résoudre ce problème.
J'espère avoir été clair :-/
Merci d'avance,
Griftou.
Partager