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 :

[VS2005][C#] Pb pour extraire selection de mon datagridview


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Par défaut [VS2005][C#] Pb pour extraire selection de mon datagridview
    Voilà, j'ai rempli un datagridview via une base de données (datasource).
    L'utilisateur peut extraire certaine ligne : il sélectionne des lignes et clique sur un bouton extraire, n'apparaisse alors que les lignes précédemment sélectionnées, toutes les autres sont à l'état visible=false. Jusque là pas de problème.
    J'ai ajouté un bouton qui inverse la sélection de l'utilisateur, donc change l'état selected par non selected et non selected par selected.
    Quand ensuite je clique sur le bouton Extraire, il m'envoie le message : L'exception InvalidOperationException n'a pas été gérée.
    Je me doute que le problème vient du code de ce bouton car si ne je passe pas par le bouton inverser, je ne rencontre pas de problème pour extraire ma sélection.

    Voici le code du bouton Extraire
    private void btnExtraire_Click(object sender, EventArgs e)
    {
    foreach (DataGridViewRow LigneEtab in tabEtablissement.Rows)
    {
    LigneEtab.Visible = LigneEtab.Selected;
    }
    AffichageNbEtab(tabEtablissement.Rows.GetRowCount(DataGridViewElementStates.Selected),sender);
    }
    et celui du bouton inverser
    private void btnInvSel_Click(object sender, EventArgs e)
    {
    foreach (DataGridViewRow LigneEtab in tabEtablissement.Rows)
    {
    if (LigneEtab.Visible)
    {
    if (LigneEtab.Selected)
    LigneEtab.Selected = false;
    else
    LigneEtab.Selected = true;
    }
    }
    }

    Esperant que vous pourrez m'éclairer sur ce problème ...

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 238
    Par défaut
    - Sur quelle ligne il remonte l'exception stp ?
    - La méthode " AffichageNbEtab" fonctione correctement ?

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 60
    Par défaut
    exacte
    - La méthode " AffichageNbEtab" fonctione correctement ?

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Par défaut
    Il remonte l'exception sur la ligne
    "LigneEtab.Visible = LigneEtab.Selected;" de la méthode
    private void btnExtraire_Click(object sender, EventArgs e)

    Et effectivement la méthode " AffichageNbEtab" fonctione correctement.

    private void AffichageNbEtab(int viNbEtab,object sender)
    {
    if (viNbEtab == 0)
    {
    MessageBox.Show("Aucun établissement sélectionné");
    Label_NbEnr.Text = "";
    btnDemarrage.Enabled = false;
    btnExtraire.Enabled = false;
    btnValiderSel.Enabled = false;
    btnInvSel.Enabled = false;
    }
    else
    {
    Label_NbEnr.Text = viNbEtab.ToString() + " établissement(s)";
    Button btn = (Button)sender;
    btnDemarrage.Enabled = (btn.Name == btnExtraire.Name);
    btnExtraire.Enabled = (btn.Name != btnDemarrage.Name);
    btnInvSel.Enabled = (btn.Name != btnDemarrage.Name);
    btnValiderSel.Enabled = true;
    }
    }

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 238
    Par défaut
    J'ai essayé de reproduire ton bug mais j'ai rien trouvé

    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
     
     
    private void button1_Click(object sender, EventArgs e)
    {
        foreach (DataGridViewRow DGR in DG_Detail_DP.Rows)
        {
              if (DGR.Selected) DGR.Selected = false;
              else DGR.Selected = true;
        }
     
        foreach (DataGridViewRow DGR in DG_Detail_DP.Rows)
        {
              DGR.Visible = DGR.Selected;
     
        }
    }
    J'utilise cette méthode sans problème. Je masque les lignes selectionnées...

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Par défaut
    Je viens de réessayer, mais il n'y a rien à faire dés que je clique sur mon bouton inverser la sélection, je rencontre cette exception quand je clique sur le bouton extraire après.
    Si je ne clique pas sur le bouton inverser, je peux extraire la sélection utilisateur sans problème.

    Y a t-il un paramètre particulier pour pouvoir changer l'état selectionné ou non ?
    N'y a t-il pas une fonction qui permettrait de retourner ce qui n'est pas sélectionner comme il existe la fonction "SelectedRows".

    J'ai du code sur l'évènement "tabEtablissement_RowStateChanged" et sur "tabEtablissement_CellFormatting" mais je l'ai mis en commentaire pour voir si mon exception était généré ou pas, et elle l'est tout de même.


  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 238
    Par défaut
    faut pister le problème et afficher l'etat de selection de toutes tes lignes.
    met un point d'arret dans ta méthode "Extraire" pour voir ligne par ligne comment ca marche. Il y a peux être une ligne qui a un etat bizard qui te fait planter.
    Genre quel est l'etat de tes lignes Invisibles ?
    je pense qu'il faut creuser du coté des lignes invisibles puisque tu les traite dans Extraires et pas dans Inverser...

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Par défaut
    Je viens de mettre des points d'arrets à peu près partout et tout parait normal. Je ne comprends vraiment pas .

    Ce que j'ai pu remarquer, c'est que ça le fait sur une seule ligne du datagridview : soit la première à rendre visible = faux, soit la dernière, et c'est toujours dans le cas de rendre la ligne invisible.

    Si quelqu'un à d'autres idées !!!

    Merci

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Par défaut
    Je viens de m'apercevoir que la ligne qui pose problème est en fait la CurrentRow.
    Quelqu'un connait-il un moyen de changer la currentRow soit en 0 Soit en y mettant l'indice de la première de mes lignes selectionnées dans mon datagridview ?


  10. #10
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Par défaut
    après recherche, il est noté qu'en changeant la "CurrentCell" cela aurait une incidence sur la "CurrentRow".
    C'est ce que j'ai fait, mais ça ne change pas ma currentRow et en plus cela modifie ma sélection.

    Y a t il quelqu'un qui aurait rencontré ce problème ?

    A l'aide.


Discussions similaires

  1. [VS2005] les DAL pour VS 2005 ?
    Par wonderliza dans le forum Accès aux données
    Réponses: 18
    Dernier message: 16/12/2005, 20h24
  2. petit soucis pour l'installation de mon ventirad
    Par arfy dans le forum Composants
    Réponses: 12
    Dernier message: 03/11/2005, 22h55
  3. css fixer une taille pour les select
    Par NeHuS dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 19/10/2005, 10h00
  4. Aide pour un SELECT MAX(...)
    Par Gladiator dans le forum Langage SQL
    Réponses: 7
    Dernier message: 24/06/2005, 16h48
  5. Utiliser un parser pour extraire des formules
    Par EpOnYmE187 dans le forum C++
    Réponses: 2
    Dernier message: 15/03/2005, 23h55

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