Appel sur événement listview_columnclick

Résolu
cs_ramaro Messages postés 11 Date d'inscription vendredi 4 février 2005 Statut Membre Dernière intervention 31 juillet 2008 - 23 avril 2007 à 11:42
cs_ramaro Messages postés 11 Date d'inscription vendredi 4 février 2005 Statut Membre Dernière intervention 31 juillet 2008 - 23 avril 2007 à 13:26
bonjour à tous!

J'ai un problème sur l'appel d'un événement sur vb6. En faite, j'ai un listview et j'ai envie qu'au moment du chargement de la fenêtre il appel l'événement associé à mon listview "listview1_columnClick(columnheader)", mais apparemment il y  a un problème sur l'affectation du paramètre "columnheader". est-ce que quelqu'un à une solution à mon problème? Ou ce que j'essaie de faire n'est pas possible (l'appel de l'événement).

Je précise que mon but c'est de trié ma liste view avec un column de type numérique, mais je remarque qu'il ne prend en charge que le type string.

j'essaie de faire un truc comme ceci dans ma requête ado : "select * from ma_table order by col_number" pour extraire les données d'une table dans la liste mais ça ne marche pas.
Est-ce que quelqu'un connais la raison pour que le liste view ne trie que les Strings?

Merçi

5 réponses

cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
23 avril 2007 à 11:55
Salut,

Est-ce que tu veux faire un tri par rapport à la première colonne ou sur une autre que la première ?

Car tu as un propopriété de la listview qui est : Sorted = True, et voir aussi :

ListView1.SortOrder = lvwAscending ' A -Z
ListView1.SortOrder = lvwDescending ' Z - A

A+
Exploreur

 
3
cs_ramaro Messages postés 11 Date d'inscription vendredi 4 février 2005 Statut Membre Dernière intervention 31 juillet 2008
23 avril 2007 à 12:29
Oui, j'essai de trier la première colonne qui est de type numérique.


je crée un instance sur un enregistrement de ma base avec ado pour extraire les enregistrements.


    With adoRub
        .ConnectionString = G_connexion
        .CommandType = adCmdText
        .CursorLocation = adUseClient
        .CursorType = adOpenKeyset
        .RecordSource = "select* from tbl_rub order by id_rub"
        .Refresh
    End With

Me.AdoRub.Refresh
    With Me.AdoRub.Recordset
        lsw_Rub.ListItems.Clear
        If .RecordCount > 0 Then
            lngCountBenef = 0
            .MoveFirst
            While Not .EOF
                If Not IsNull(!id_rub) Then
                    Set sItem = lsw_Rub.ListItems.Add(, , !id_rub)
                Else
                    Set sItem = lsw_Rub.ListItems.Add(, , null)
                End If
               
                If Not IsNull(!strDesignation) Then
                    sItem.SubItems(1) = !strDesignation
                Else
                    sItem.SubItems(1) = vbNullString
                End If
               
                If Not IsNull(!strType) Then
                    sItem.SubItems(2) = !strType
                Else
                    sItem.SubItems(2) = vbNullString
                End If
            lngCountBenef = lngCountBenef + 1
               
                .MoveNext
            Wend
        End If
    End With

au lien davoir l'order 1,2,3,4,5,6,7,8,9,10,11,12 sur l'  "id_rub"
j'ai ceci : 1,10,11,12 ...... 2,20,21....

maintenant tu vois le problème
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
23 avril 2007 à 13:07
Salut,

Attend voir, il y a eu déjà une question sur le forum et Darksidious y avait répondu..Il me semble qu'il faut que tu regardes si ton champ dans ta base et du type numérique..

Je vais essayé de retrouver ce post...

A+
Exploreur

 
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
23 avril 2007 à 13:24
Me revoilou, c'est bien cela, vérifie dans ta base de donnée que ton champ Id_Rub, soit bien déclaré en numérique...

Et dernière petite chose, il y a un truc que tu peux faire dans ton code pour l'optimisé c'est :

If Not IsNull(!strDesignation) Then
          sItem.SubItems(1) = !strDesignation
Else
          sItem.SubItems(1) = vbNullString
End If

En faisant cela tu vérifié donc que si ton champ designation dans ta base n'est pas vide, tu remplis un subitems de la listview, tu peux très bien remplacer ton code ci-dessus par :

If Not IsNull(!strDesignation) Then sItem.SubItems(1) = !strDesignation

Dans le cas ou ton champ désignation est vide, ben il se passe rien, et ton subitems sera quand même vide....

A+
Exploreur

 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ramaro Messages postés 11 Date d'inscription vendredi 4 février 2005 Statut Membre Dernière intervention 31 juillet 2008
23 avril 2007 à 13:26
c'est cool Exploreur mais ne donne plus la peine de chercher. l'astuce c'est la propriété sorted du liste view. on le met à false
pour qu'il ne trie pas au moment du chargement.
merçi encore
0
Rejoignez-nous