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

VB.NET Discussion :

DatagridView & Programmatic sorting


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Par défaut DatagridView & Programmatic sorting
    Bonjour,

    J'ai construit une datagrid dans Visual Studio et je souhaiterais customiser les tris lorsque l'utilisateur tente de trier les colonnes. Par exemple, j'ai une colonne mois de l'année et si l'utilisateur la trie elle ne sera pas triée par ordre alphabétique mais dans l'ordre naturel des mois de l'annéee: janvier, février, mars...

    Je cite cet exemple des mois dfe l'année, mais je fais des tris beaucoup plus complexes avec masquage/démasquage de lignes...

    J'ai regardé un peu le "programmatic sorting" sur les colonnes, mais je ne comprends pas exactement de quoi il s'agit ni comment le faire. J'ai regardé les tuto sur le site de Microsoft mais je reste dubitatif...

    Merci de vos conseils

  2. #2
    Expert confirmé 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
    Par défaut
    Quelques idées en vrac pour contourner le problème :
    • pour las Mois, transformer cette colonne de type string(Janvier, Février, ...) en type int(1,2,..) et utiliser l'event CellFormatting por remplacer à l'affichage le n° de mois par la chaine associée (le tri opérera sur les n°)
    • ajouter des colonnes non visibles (voir si il est possible d'activer le tri sur une colonne cachée lorsqu'on clique sur le header d'une colonne "customisée").

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Par défaut
    Mon propos est exactement la second suggestion. A savoir trier sur une colonne cachée lorsqu'on clique sur le header d'une colonne, mais ma question éatit : comment on fait ?

    Merci

  4. #4
    Expert confirmé 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
    Par défaut
    on peut essayer de conserver la colonne triée via l'event ColumnHeaderMouseClick et exécuter un Sort sur la colonne cachée dans l'event Sorted.
    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
    private int SortedColumnIndex =-1 ;
    private string NextSortOrder1 = "ASC" ; // une variable par col cachée associée à une col customisée
    private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
    {
      if (e.ColumnIndex==Le_numero_de_colonne_custom1) SortedColumnIndex = e.ColumnIndex;
    }
     
    private void dataGridView1_Sorted(object sender, EventArgs e)
    {
      if (SortedColumnIndex == Le_numero_de_colonne_custom1)
      { 
        SortedColumnIndex = -1 ; // pour éviter de boucler sur l'event Sorted
        MyDataGridView.BindingSource.Sort="Le_nom_de_colonne_cachee1,"+NextSortOrder1 ;
        NextSortOrder1=NextSortOrder1=="ASC" ? "DESC" : "ASC" ;
      }
      else NextSortOrder1="ASC" ; 
    }
    C'est pas très élégant comme solution puisqu'on fait un tri inutile, mais il n'y a malheureusement pas d'event de type "ColumnBeginSort" pour intercepter le click sur la flèche de tri du ColumnHeaderCell.

Discussions similaires

  1. [Débutant] DataGridView.DataSource.Sort avec chiffres et texte
    Par IL-MAFIOSO dans le forum VB.NET
    Réponses: 12
    Dernier message: 17/11/2016, 10h54
  2. [Débutant] Datagridview sorted C#
    Par Akuraii dans le forum Windows Forms
    Réponses: 2
    Dernier message: 17/08/2012, 14h00
  3. [Débutant] sort mode dans datagridview
    Par ozthewizard dans le forum VB.NET
    Réponses: 9
    Dernier message: 26/10/2011, 07h50
  4. Réponses: 3
    Dernier message: 05/01/2009, 17h06
  5. Sorting DataGridView binding source List<T>
    Par Leole dans le forum C#
    Réponses: 3
    Dernier message: 26/11/2008, 11h59

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