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 :

Rechercher les items dans une listeview [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 135
    Par défaut Rechercher les items dans une listeview
    Bonjour à tous.

    Voilà mon soucis et je pense qu'en me trounant vers vous, j'aurais très certainement une réponse.

    J'ai une listeview (LvInterpretePasse) dans laquelle il y a 3 colonnes (Interprètes ; Titres chantés ; date et heure)

    J'ai une textbox (TbRecherche), un bouton recherche (BtnRecherche) et un bouton annuler (BtnAnnule)

    Pour ce qui est du remplssage de la listeview, je n'ai aucun problème.
    Pour la sauvegarde pas de soucis non plus. j'ai déjà trouvé de l'aide en consultant ce forum.

    Maintenant, ce que je voudrais, c'est que lorsque que je saisi un nom dans la textbox (TbRecherche) et que je clique sur le bouton (BtnRecherche), il ne s'affiche dans ma listeview que les items correspondants au nom que j'ai saisis.

    Exemple :

    Dans la listeview, colonne interprètes ; Colonne titre chanté ; colonne Date et heure j'ai
    TOTO ; La bonne du curé ; 25/09/2012 21:31:15
    TATA ; Quand la musique est bonne ; 25/09/2012 22:15:10
    TITI ; Partir un jour; 25/09/2012 22:20:55
    TOTO ; Mon vieux ; 25/09/2012 22:25:15
    LULU ; La salsa du démont; 25/09/2012 22:31:18
    TOTO ; Le jerk; 25/09/2012 22:45:05


    Je saisis "TOTO" dans la Textbox, je clique sur Recherche et j'obtiens dans ma listeview
    TOTO ; La bonne du curé ; 25/09/2012 21:31:15
    TOTO ; Mon vieux ; 25/09/2012 22:25:15
    TOTO ; Le jerk; 25/09/2012 22:45:05

    Quand je clique sur un bouton annuler (BtnAnnule), la listeview revient à son état initiale.

    Mais voilà, cela je n'arrive pas à la faire.

    Merci par avance pour votre aide qui j'en suis persuadé me permettra de mener à bien cette fonction.

    @+ Martipit

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Dans l'évènement OnClick de BtnAnnule, il faut que tu réinitialise le filtre que tu appliques sur la source de données de ton ListView.

    Si tu postes ton code, on pourra t'en dire un peu plus...
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 135
    Par défaut
    salut Matt07

    Pour l'instant, je n'ai même pas de code pour le filtre à appliquer dans ma listeview car je ne sais pas comment faire justement.

    Ce que je peux donner c'est le code que j'utilise pour sauvegarder et remplir ma listeview.

    Code pour la sauvegarde de ma listeview :
    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
    'Déclare la chaîne temporaire qui servira à enregistrer le contenu du tableau
            Dim tmpContenu As String = ""
            'On va maintenant construire la même chose qu'un fichier .csv :
            '   - Chaque ligne est séparée par le caractère VbLf
            '   -Les données de chaque ligne sont séparées par le caractère ";"
     
            'Prend chacune des lignes de la ListView
            For Each I As ListViewItem In LvInterpretePasse.Items
                'Prend chaque sous-élément de l'item actuel
                For Each SI As ListViewItem.ListViewSubItem In I.SubItems
                    'Ajoute la valeur du subitem à la string représentant le tableau (avec le ";" pour séparer les valeurs)
                    tmpContenu = tmpContenu & SI.Text & ";"
                Next
                'Ajoute le caractère VbLf à la string représentant le tableau
                tmpContenu = tmpContenu & vbLf
            Next
            'Retire de la chaîne de la String le ";" excédentaire de chaque ligne
            tmpContenu = tmpContenu.Replace(";" & vbLf, vbLf)
            'Enregistre maintenant cette String dans tes settings
            My.Settings.Sauveliste = tmpContenu
    Code pour le remplissage de la listeview :
    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
    Dim tmpContenu As String
            Dim Lignes As String()
            Dim Cells As String()
            Dim incr As Integer
            Dim Items As ListViewItem()
            'Récupère le tableau dans les settings
            tmpContenu = My.Settings.Sauveliste
            'Divise la String en autant de lignes qu'il y en a (séparées par les VbLf)
            'Attention , comme dans la construction le dernier caractère est VbLf on va se retrouver avec une ligne en trop dont il ne faudra pas tenir compte
            Lignes = Split(tmpContenu, vbLf)
            'Indique le nombre d'items que l'on va ajouter à la ListView
            ReDim Items(Lignes.GetUpperBound(0) - 1) '-1 car il y a une ligne vide en trop dans le fichier
            'Ajoute chaque ligne dans le tableau de données
            For incr = 0 To Lignes.GetUpperBound(0) - 1
                'Divise la ligne en autant de données qu'elle en contient (séparées par des ";")
                Cells = Split(Lignes(incr), ";")
                'Ajoute la ligne à la liste des lignes à ajouter
                Items(incr) = New ListViewItem(Cells)
            Next
            'Ajoute l'ensemble des lignes à la ListView
            LvInterpretePasse.Items.AddRange(Items)
    Voilà ce que j'ai acutellement.

    Merci par avance à toi.

    @+ Martipit

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Par défaut
    Salut,

    Moi je ferais une recherche directement à partir de tes lignes genre

    For each lg as string in lignes
    if lg.contains("ToTo) then
    'efface ancien ListView
    'Affiche nouveau listView
    etc.

    Puis, si je peut me permettre je ferais ma selection du titre recherché par la selection d'une ligne de la listeView.

    j'espère que ça peut t'aider

    Bon code

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 135
    Par défaut
    Salut Mario.

    Merci pour ton intervention mais mon gros problème est le code pour l'affichage de la nouvelle liste sans pour autant perdre les données de l'ancienne

    @+ Martipit

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Par défaut
    Le principe est de ne jamais modifier ta liste permanante dans ton settings ainsi tu récupères la liste de recherche à l'interieur de celle çi. Par la suite tu réinicialises ta listeview complète facilement pour retrouver l'ensemble de tes données.

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

Discussions similaires

  1. Rechercher les composants dans une autre interface selon id selectionné
    Par monta_amri dans le forum Développement Web en Java
    Réponses: 6
    Dernier message: 27/04/2015, 17h06
  2. Aligner les item dans une description
    Par Ladgalen dans le forum Mise en forme
    Réponses: 2
    Dernier message: 03/02/2009, 15h01
  3. Rechercher les element d'une liste dans une autre liste
    Par fessebleu dans le forum Langage
    Réponses: 30
    Dernier message: 24/04/2006, 21h23
  4. recherche d'un item dans une ClistCtrl
    Par ledaker dans le forum MFC
    Réponses: 1
    Dernier message: 05/12/2005, 17h01

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