Salut tout le monde;
Dans mon projet actuelle j'ai un problème avec une DataGridView;
J'ai une form principal avec des tabs, et une autre forme qui s'affiche dans la form principal avec une DataGridView . cette DataGridView affiche les donne d'une table de la base de donnée. jusque la ça fonctionne bien, mais on viens d'ajouté un champs dans la table en question pour dire si les enregistrement sont valide ou pas. avec ce changement dans la base j'ai crée une nouvelle tab dans la form principal pour scindé l'affichage dans deux endroit l'un pour les données valide et l'autre pour les données non valide.
donc logiquement j'ai pensé a utilisé la même forme (celle avec la DataGridView ) pour les deux affichage mais avec un mécanisme d'appel diffèrent.
lorsque je clic sur la première tab tout fonctionne normalement et la liste de enregistrement valide (ou invalide selon le cas) sont affiché correctement mais lorsque je clic après sur la deuxième tab la DataGridView m'affiche les même donnée que la première alors-que je viens de mètre sa DataSource a null puis je lui affecte la liste des enregistrement invalide ( ou valide) qui sont diffèrent de ce qui sont affiché a la DataSource de la DataGridView . j'ai utilise les instructions Refresh() et Parent.Refresh() de la DataGridView mais rien a faire.
c'est comme si la datagridview garde toujours a l'affichage la liste des enregistrement avec lesquels elle s'exécute la première fois. même si ça DataSource est mise a null puis réaffecté.
je vérifie juste après l'affectation de ma deuxième liste d'enregistrement et la DataSource de la datagridview contient bel et bien les enregistrements de cette dernière. mais l'affichage et erronée.
donc voici la méthode d'appel de la fenêtre qui contient la DataGridView pour les données valide :
et aussi cette méthode est utilisé pour lancé cette même fenêtre pour les données valide :
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 private void Form1_Load(object sender, EventArgs e) { switch (this.ribbonControl1.SelectedRibbonTabItem.Text) { .... case "CasC": ListeCas = new ListeCasC(this, false); ListeCas.MdiParent = this; ListeCas.ListeCasC_Load(sender, e); ListeCas.Show(); break; default: break; } }
et voici la méthode d'appel a la la même fenêtre pour l'affichage de la liste des données non valide :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 private void CasCribTab_Click(object sender, EventArgs e) { ListeCas = new ListeCasC(this, false); ListeCas.ListeCasC_Load(sender, e); }
voici le code de la méthode ListeCasC_Load pour le chargement de la DataGridView; les données valide (Corbeille = false et non valide Corbeille = true):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 private void CasCbuttonX_Click(object sender, EventArgs e) { ListeCas = new ListeCasC(this, true); ListeCas.ListeC_Load(sender, e); CasCbuttonX.Enabled = false; ImagesbuttonX.Enabled = true; SimbuttonX.Enabled = true; }
Est ce que quelqu'un peut me dire s'il vous plait pourquoi j'ai ce probleme d'affichage de la liste de données dans la DataGridView.
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 public void ListeCasC_Load(object sender, EventArgs e) { if (!Corbeille) { dgv_CasC.SelectionMode = DataGridViewSelectionMode.FullRowSelect; if (ModeAffchSimple == true) { dgv_CasC.AutoGenerateColumns = false; CasCImg CasC = new CasCImg(); List<CasCImg> listeCasC = CasC.getAllCasCImages(); try { dgv_CasC.DataSource = listeCasC; } catch (Exception ex) { MessageBox.Show(ex.Message); } } else { dgv_CasC.AutoGenerateColumns = false; CasCImg CasC = new CasCImg(); List<CasCImg> listeCasC = CasC.getAllCasCImages(Ann1, Ann2, Ang1, Ang2); dgv_CasC.DataSource = listeCasC; dgv_CasC.Columns[16].Visible = true; } } else { //dgv_CasC.Parent = null; //Controls.Add(dgv_CasC); //ResumeLayout(); dgv_CasC.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dgv_CasC.AutoGenerateColumns = false; //dgv_CasC.Rows.Clear(); //dgv_CasC.UpdateRow(0, true); dgv_CasC.DataSource = null; dgv_CasC.DataSource = listcCorbeille; //dgv_CasC.Invalidate(); //(dgv_CasC.BindingContext[dgv_CasC.DataSource] as CurrencyManager).Refresh(); dgv_CasC.Refresh(); if (parent != null) { dgv_CasC.Parent.Refresh(); } } }
Merci de votre aide.
Partager