Affichage colonne checkbox dans un datagridview
Bonjour
J'utilise un DataGridView bindé dans lequel j'ai ajouté une colone checkbox
En clicquant sur le header, je souhaite inverser les valeurs checked / unchecked
Ca marche presque bien sauf que la premiere ligne n'affiche jamais le signe check, pourtant la valeur est bien "true"
Voici la boucle que j'utilise.
Ce qui est curieux c'est que c'est le row[0] qui veut pas reagir, si je demare la boucle a 1 j'ai visuellement exactement le meme resultat, sauf que dans ce cas rows[0] reste null
Code:
1 2 3 4 5 6 7 8 9 10 11
| for (int i = 0; i < dgv_viewTour.RowCount; i++)
{
if ((bool)dgv_viewTour.Rows[i].Cells[0].FormattedValue.Equals(false))
{
dgv_viewTour.Rows[i].Cells[0].Value = true;
}
else
{
dgv_viewTour.Rows[i].Cells[0].Value = false;
}
} |
Mais c'est épouvantable !
C'est vraiment un sac de noeud ce truc !
Je viens de constater que l'inverse est aussi vrai !
L'utilisateur peut entrer dans son DGV et selectionner des lignes grace a la colonne check box
Sur le mouseleave du DGV j'opere le traitement de ce qui a été sélectionné
Et j'ai exactement le meme problème a l'inverse, la ligne qu'il vient de modifier n'est pas considérée !
Excuse moi de te solliciter encore mais comme tu semble avoir une bonne expèrience du sujet,
Que faut il faire dans ce cas ci ?
Il faudrait un petit tutorial sur les checkbox column car je je pense que c'est tout sauf intuitif !
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| // **********************************************************************************************
private void dgv_viewTour_MouseLeave(object sender, EventArgs e)
{
// boucle d'affichage
DisplaySelectedTours();
}
// **********************************************************************************************
private void DisplaySelectedTours()
{
pb_zoom.Refresh();
for (int i = 0; i < dgv_viewTour.RowCount - 1; i++)
{
if (dgv_viewTour.Rows[i].Cells[0].FormattedValue.Equals(true))
{
DataGridViewRow dgvr = dgv_viewTour.Rows[i];
int dag = (int)dgvr.Cells["dag"].Value;
int chauff = (int)dgvr.Cells["chauffeurID"].Value;
SelDispOneTour(dag, chauff);
}
}
} |