Salut à toutes et à tous
Voila j'ai un datagridview(DGV) qui affiche une liste d'étudiant qui est mise à jour dans la BDD quand l'utilisateur fait des modifications, ajouts et suppression dans le DGV.
Dans cette liste il y a une ligne que je ne veux ni modifier ni supprimer.
Pour la suppression j'ai réussi à trouver une solution afin que l'utilisateur ne puisse jamais la supprimer.
En revanche pour bloquer la modification de la ligne j'ai réussi à moitié. En faite après le chargement de mon DGV (grâce à un DataSet) je parcours le DGV et repère la ligne à ne pas modifier (au chargement elle est toujours en dernière position) et je la met en ReadOnly.
Mais le problème c'est que si l'utilisateur clique sur une entête de colonne pour trier la liste (en fonction des noms par exemple). Et bien le ReadOnly est perdu car cette dernière change de position et donc l’utilisateur peut la modifier ce que je ne veux absolument pas.
J'ai cherché et j'ai trouver qu'il existe un event ColumnDisplayIndexChanged qui se déclenche lorsque l'utilisateur tri un colonne. Donc à ce moment la je met ce code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 private void dgv_inf_etu_ColumnDisplayIndexChanged(object sender, DataGridViewColumnEventArgs e) { if (dgv_inf_etu.Rows.Count != 0) { int i; for (i = 1; i <= dgv_inf_etu.Rows.Count; i++) { if (dgv_inf_etu.Rows[i].Cells[0].Value.ToString() == "NULL") { dgv_inf_etu.Rows[i].ReadOnly = true; } } } }
Mais le problème est que lorsque je charge pour la première fois mon DGV cette event s’exécute en boucle et ne s'arrête jamais. Est ce que c'est normal ou c'est moi qui n'est pas compris ce que l'event ColumnDisplayIndexChanged fait.
Quelqu'un pourrait-il m'expliquer exactement pourquoi l'event s'execute en boucle au premier chargement de mon DGV? Et si il existe un autre moyen?
Merci par avance amicalement.
Partager