IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C# 2.0]Datagridview --> Checkbox column - Comment checker la case ?


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    Points : 38
    Points
    38
    Par défaut [C# 2.0]Datagridview --> Checkbox column - Comment checker la case ?
    Bonjour, je suis assez agacer par le contrôle Datagridview qui me paraissait presque parafait jusque là...

    En effet je cherche à traiter un clic sur une cellule dont le type est DataGridViewCheckBoxCell mias je n'y parvient pas. J'ai lu pas mal de posts sur les différent Forum MSDN, ici et ailleurs mais je n'ai jamais trouver le moyen de réaliser mon traitement proprement et sûrement. J'ai d'ailleurs lu tout et n'importe quoi... et moi même fait tout est n'importe quoi sans résultat...

    ref voici comment je procède pour "checké" la case. mon problème est de tester l'état de cette dernière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void dataGridViewItems_CellContentClick(object sender, System.Windows.Forms.DataGridViewCellEventArgs e)
            {
                this.dataGridViewItems.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 1;
            }
    ca marche très bien, mais pour tester la valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.dataGridViewItems.Rows[e.RowIndex].Cells[e.ColumnIndex].Value
    ben là je cale. le type est DataGridViewCheckBoxCell, donc j'ai bien essayé d'instancié un objet de ce type et de l'initialisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    DataGridViewCheckBoxCell maCell = new DataGridViewCheckBoxCell();
                maCell = (DataGridViewCheckBoxCell)this.dataGridViewItems.Rows[e.RowIndex].Cells[e.ColumnIndex];
    maCell.Value = 1; //fonctionne pour cocher la case
     
    //mais ceci ne fonctionne pas pour tester la valeur de la case
    if((bool)maCell.value == true)
       //....
     
    //ceci non plus... fallait tenter quand meme on sait jamais
    if(Int32.parse(maCell.value.ToString()) == 1)
       //....
    bref je sius à cours d'idée...

    si quelqu'un aurait une explication quelquonque... merci d'avance

  2. #2
    Membre habitué Avatar de LaNat
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 164
    Points
    164
    Par défaut
    Sur MSDN j'ai trouvé ça :
    La propriété Value est l'objet de données effectives contenu dans la cellule, alors que la propriété FormattedValue est la représentation mise en forme des données. Les propriétés ValueType et FormattedValueType correspondent respectivement aux types de données de ces valeurs.

    Si tu testais le type de valeur de cette cellule avec ValueType? Peut-être que ça t'aiderait?
    Ce qui est bizarre c'est que qd tu assignes la valeur tu mets un int et ca fonctionne alors que qd tu testes avec un int ca ne fonctionne pas

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 79
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par LaNat
    Sur MSDN j'ai trouvé ça :
    La propriété Value est l'objet de données effectives contenu dans la cellule, alors que la propriété FormattedValue est la représentation mise en forme des données. Les propriétés ValueType et FormattedValueType correspondent respectivement aux types de données de ces valeurs.

    Si tu testais le type de valeur de cette cellule avec ValueType? Peut-être que ça t'aiderait?
    Ce qui est bizarre c'est que qd tu assignes la valeur tu mets un int et ca fonctionne alors que qd tu testes avec un int ca ne fonctionne pas
    Toi t'es mon sauveur
    en effet j'ai eu pas mal d'infos grâce à ces propriétées... Voici le code qui fonctionne PARFAITEMENT sans aucun problèmes :
    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
     
    void dataGridViewItems_CellContentClick(object sender, System.Windows.Forms.DataGridViewCellEventArgs e)
            {
                //this.dataGridViewItems.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 1;
                DataGridViewCheckBoxCell maCell = new DataGridViewCheckBoxCell();
                maCell = (DataGridViewCheckBoxCell)this.dataGridViewItems.Rows[e.RowIndex].Cells[e.ColumnIndex];
     
                if (maCell.FormattedValue.Equals(true))
                {
                    maCell.Value = 0;
                }
                else
                {
                    maCell.Value = 1;
                }
     
            }
    j'éspère que ca aidera ceux qui comme moi galère un peu avec tout ca...
    merci encore

  4. #4
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    il faut utiliser FormattedValue


    DataGridViewRow dgvr = ((DataGridView)sender).Rows[e.RowIndex];

    if (!((bool)dgvr.Cells[0].FormattedValue))
    {
    ....
    }


    A+

  5. #5
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut le check box de la premiere ligne ne change pas
    Salut

    To petit post ici m'a bien servi merci j'ai néanmoins un drole de truc

    J'utilise une boucle pour swapper les valeurs checked / unchecked d'une colonne checkbox dans un DGV quand uµon clique sur le header

    Ca marche presque bien sauf que la premiere ligne n'afiche pas le siggne 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

    Aurais-tu une idée ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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;
            }
          }

  6. #6
    Membre habitué Avatar de maleaume
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2005
    Messages : 93
    Points : 131
    Points
    131
    Par défaut
    vieux post mais methode plus belle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DataGridViewCheckBoxCell chkCells = (sender as DataGridView).Rows[e.RowIndex].Cells[e.ColumnIndex] as DataGridViewCheckBoxCell;
    if (chkCells != null)
           chkCells.Value = !(bool)chkCells.Value;
    ne fonctionne que dans le cas de checkbox Binaires (true/false);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. DataGridView CheckBox Column : Mise en garde
    Par olibara dans le forum C#
    Réponses: 2
    Dernier message: 23/03/2009, 13h43
  2. Comment recupérer les cases selectionnés dans une liste à Checkbox
    Par Ange_1987 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 14/03/2009, 00h57
  3. Modification d'une ligne d'un datagridview via checkbox
    Par DiamonDonald dans le forum Windows Forms
    Réponses: 7
    Dernier message: 08/04/2008, 23h42
  4. Réponses: 5
    Dernier message: 08/02/2007, 16h46
  5. [VB.NET 2005] DataGridView et CheckBox
    Par nathanaelle dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/08/2006, 10h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo