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

wxPython Discussion :

Du ColumnSorterMixin et des dates


Sujet :

wxPython

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Par défaut Du ColumnSorterMixin et des dates
    Bonjour à tous,

    J'ai un Virtual ListCtrl avec du ColumnSorterMixin. Il me tri parfaitement tous strings ou integers. Par contre, quand je souhaite trier des colonnes contenant des dates, cela ne fonctionne pas. Evidemment, je pourrais saisir les dates au format AAAA/MM/JJ et ça marcherait... mais je souhaite conserver mes dates au format français.

    Auriez-vous une petit idée pour que ce tri de dates fonctionne ?

    Merci pour vos réponses !

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Bonjour Ggamer,

    Pourrais-tu poster un bout de code avec quelques données pour pouvoir tester?

    merci et à bientôt.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Par défaut
    Bonjour,

    A priori, le columnsorter suppose l'utilisation d'une map itemDataMap et la listctrl etant virtual, tu dois sans doute recuperer le texte a afficher avec GetItemText. Donc je propose d'inserer dans la map un objet datetime.datetime par exemple, qui implemente correctement l'order, puis de faire dans GetItemText la conversion vers le format texte.

    J'espere que ca aide, mais effectivement, ce serait plus facile de repondre avec un bout de code!

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Par défaut
    Excusez-moi, la réponse arrive un peu tard.

    C'est bien vu Fructidor. J'ai utilisé ta méthode et cela fonctionne.

    En fait, j'ai mis mes dates dans la base au format AAAA-MM-JJ pour simplifier l'affaire.

    Pour ceux que cela intéresse. Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        def OnGetItemText(self, item, col):
            """ Affichage des valeurs dans chaque case du ListCtrl """
            index=self.itemIndexMap[item]
            valeur = str(self.itemDataMap[index][col])
            # Remplace une valeur "None"
            if valeur == "None" :
                valeur = ""
            # Reformate une valeur date en version française
            if valeur[4:5]=="-" and valeur[7:8]=="-":
                valeur = str(valeur[8:10])+"/"+str(valeur[5:7])+"/"+str(valeur[0:4])
            return valeur
    J'avais également trouvé ceci. Cela fonctionnait aussi. Il s'agissait d'agir directement sur la méthode de tri. Mais j'ai mis de côté cette solution :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
        def SortItems(self,sorter=cmp):
            items = list(self.itemDataMap.keys())
            items.sort(sorter)
            self.itemIndexMap = items
     
            # Pour contourner le problème de tri avec des dates :
            numColonne = self._col
            contenuCase = str(self.itemDataMap.values()[0][self._col])
     
            if contenuCase[2:3]=="/" and contenuCase[5:6]=="/":
     
                # Création d'une liste temporaire:
                listTemp = []
                nbreLignes = len(self.itemDataMap.keys())
                numLigne = 0
                for ligne in range(nbreLignes):
                    contenuDate = self.itemDataMap.values()[numLigne][numColonne]
                    contenuDate = contenuDate[-4:]+contenuDate[3:5]+contenuDate[:2]
                    idLigne = self.itemDataMap.values()[numLigne][0]
                    listTemp.append((contenuDate, idLigne))
                    numLigne += 1
     
                # Test Recherche du sens actuel
                itemCol = self.GetColumn(numColonne)
                numImage = itemCol.GetImage()
                if numImage == 1:
                    sens = True
                else:
                    sens = False
     
                # Tri de la liste
                listTemp.sort(reverse = sens)
     
                # Récupération des Keys de cette liste
                listID = []
                for ignore,id in listTemp :
                    listID.append(id)
     
                self.itemIndexMap = listID
     
            # redraw the list
            self.Refresh()
    Merci à tous les 2 pour l'intérêt porté à ma question !!!

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

Discussions similaires

  1. Saisie des dates
    Par J-P-B dans le forum XMLRAD
    Réponses: 5
    Dernier message: 04/07/2003, 11h08
  2. Manipuler des dates...
    Par Ti Jen-tsie dans le forum Langage
    Réponses: 4
    Dernier message: 26/06/2003, 11h46
  3. [MCD] [MCD] Gestion des dates
    Par brionne dans le forum Schéma
    Réponses: 3
    Dernier message: 30/05/2003, 13h01
  4. Réponses: 3
    Dernier message: 19/03/2003, 15h19
  5. Fonctions de manipulation des chaines et des dates
    Par Fares BELHAOUAS dans le forum Débuter
    Réponses: 3
    Dernier message: 09/11/2002, 22h43

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