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 :

Trie Datagridview en fonction couleur cellulle


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 41
    Points : 26
    Points
    26
    Par défaut Trie Datagridview en fonction couleur cellulle
    Bonjour,
    J'ai un datagridview et dans certaines Row il peut y avoir des cellulles colorés en bleu.
    Je voudrais que 'les lignes où il y a des cellules colorés en bleu soient les 1eres lignes de la datagridview'.
    J'ai implémenté une classe ColorRowCompareret sa méthode Compare.
    Par contre, quand j'appelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gdvListes.Sort(new ColorRowComparer(SortOrder.Descending));
    j'ai le message : que je ne peux appliquer la méthode Sort car ma gridview à sa propriété datasource lié. Et qu'il faut Trier à partir de la datasource.

    Or ma datasource est lié à une bindingsource qui est une datatable, et je n'ai évidemment pas les infos liés à la couleur des cellules dans ma datatable.

    Avez vous une idée de comment faire ?

    Merci

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    je n'ai évidemment pas les infos liés à la couleur des cellules dans ma datatable.
    1) Si les couleurs dépendent de la row traitée c'est jouable.
    2) Si elles dépendent aussi des row voisines, ca risque de devenir compliqué.

    Dans le cas 1), intercepte l'événement SortCompare avec un code comme celui-la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private void dataGridView1_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
    {
      e.SortResult = Ma_Fonction_Comparant_les_Rows(e.RowIndex1,e.RowIndex2) 
      // valeurs e.SortResult : -1, 0 ou 1
      e.Handled = true;             
    }
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    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
    Si elles dépendent aussi des row voisines, ca risque de devenir compliqué.
    Il me semble que dans ce cas la, le tri n'est de toute facon pas envisageable !!
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  4. #4
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    dans ce cas la, le tri n'est de toute facon pas envisageable !!
    Alacaraibe veut peut-être conserver les couleurs qui dépendent des row voisines dans l'ordre initial
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  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
    Je ne sais pas comment la datatable est chargée, mais une solution élégante est d'ajouter un champ virtuel dans la datatable et qui contiendrait la couleur
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par olibara Voir le message
    Je ne sais pas comment la datatable est chargée, mais une solution élégante est d'ajouter un champ virtuel dans la datatable et qui contiendrait la couleur
    Qu'est ce que tu appelle champs virtuel ?
    Un simple champs ?

  7. #7
    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
    Salut

    Le terme "vituel" n'est peut etre pas tout a fait approprie mais je parle d'un champs que tu ajouterais a ta datatable soit par query soit par ajout de colonne
    Et ce champ contiendrait le resultat de l'expression que tu utilise je suppose pour ta mise en couleur
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par olibara Voir le message
    Salut

    Le terme "vituel" n'est peut etre pas tout a fait approprie mais je parle d'un champs que tu ajouterais a ta datatable soit par query soit par ajout de colonne
    Et ce champ contiendrait le resultat de l'expression que tu utilise je suppose pour ta mise en couleur
    Ok.

    Pour l'instant, j'ai trouvée une solution temporaire, car assez lente au niveau perf : Je scinde la datatable sousjacente de la datagridview a triée avec le critère couleur, en deux datatable : une avec le critère couleur Ok, l'autre avec le critère couleur Ko. Puis je merge tout ça dans une datatable, que je bind ensuite à ma datagridview. Comme ça c'est triée. Par contre c'est plus lent.
    Mais bon. Mais ta solution semble bien. Mais le problème est que ma datatable est dynamique : les données proviennent de fichiers dont les champs changent constamment. Puis je l'affiche automatiquement. Donc rajouté un champs fixe sur la couleur ...

    En tout cas, merci, pour l'aide.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/02/2010, 16h27
  2. vb.net - DataGridView Couleur cellule sélectionnée
    Par House MD dans le forum VB.NET
    Réponses: 5
    Dernier message: 30/10/2008, 01h12
  3. Réponses: 4
    Dernier message: 11/10/2007, 09h28
  4. changer couleur cellule en fonction d'une liste
    Par MottetCCSF dans le forum Excel
    Réponses: 4
    Dernier message: 20/06/2007, 12h21
  5. Changement couleur cellule EXCEL en fonction du texte
    Par kikaillo dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 14/04/2006, 14h22

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