Bonjour, c’est encore moi
Décidément, même les choses que je pensais simples me posent problème en ce moment.
Dans une form, j’ai un premier DGV que l’utilisateur ne peut pas modifier. En cliquant sur une ligne de ce DGV s’affiche dans un second DGV juste au-dessous les détails de cette ligne. Là, par contre, l’utilisateur peut faire des modifs et je voudrais justement détecter les éventuelles modifications.
Mon code pour charger le deuxième DGV est le suivant:
Pour actualiser le DGV3 je fais comme ça:
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 conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = D:\Data.mdb;") da1 = New OleDbDataAdapter("SELECT ID, Pos, Objet, Nbre, Unite, Prix, Pourcent, ROUND((Nbre * Prix * Pourcent / 100), 2) AS Net FROM TblPos WHERE ID Like '" & Me.DGV1.SelectedCells(2).Value & "'", conn) Dim cb As New OleDbCommandBuilder(da1) ds1 = New DataSet conn.Open() da1.Fill(ds1, "pos") conn.Close() DGV3.DataSource = Nothing DGV3.DataMember = "Unterpos" DGV3.DataSource = ds1
Puis je charge à nouveau le DGV3 pour voir actualiser le résultat du calcul.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Dim dv1 As New DataView(ds1.Tables("pos")) Dim drv1 As DataRowView = dv1(DGV3.CurrentRow.Index) Dim cb As New OleDbCommandBuilder(da1) conn.Open() da1.Update(ds1, "pos") conn.Close()
Je suis pas sûr que ce soit très "propre" mais bon, ça fonctionne.
Je pensais détecter les modifs de cellule avec un truc du genre cellvaluechanged, mais le problème est que ça se déclenche à chaque changement de ligne quand le DGV3 est à nouveau chargé. Comment faire pour que l’événement ne se déclenche que lorsque l’utilisateur change le contenu de la cellule ??
Merci merci merci !
Guillaume
Partager