Cacher une ligne d'une listview (ou autre)

Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 - 24 nov. 2009 à 20:10
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 - 25 nov. 2009 à 17:50
Bonsoir, me revoila avec encore un souci.
Est ce qu'une bonne âme a un truc pour cacher une ligne d'une listview ? ou au moins refaire un tri correct.
En fait je sais qu'il suffirait de vider la listview et de la re-remplir avec les critéres de recherche, mais voila tout mon code s'appui sur cette maudite listview
je pourrais tout réécrire mais cela ne sera quant dernier recourt.
Je suis parti (aprés recherche) sur la dimension de la ligne item en cours et donc :
J'ai essayé de changer la font en tout petit, mais j'ai des images dedans, alors j'ai essayé de les réduire mais la ligne reste toujours à la même taille.
je sais plus quoi faire, Merci à ceux qui me propose une voie de recherche..
Cordialement @dn

4 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 nov. 2009 à 04:44
"mais voila tout mon code s'appui sur cette maudite listview"

je vois pas ce qui gène a faire cela, en fait....

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
25 nov. 2009 à 10:28
Si, je t'explique.
La listview est renseigné par un tableau qui vient d'une class sérialisé.
Seulement au lieu de travailler sur ce tableau, je travaille sur la listview car c'est plus facile d'ajouter/supprimer/modifier les champs. Comme le disait Mayzz j'aurais mieux fait d'utiliser une list of qu'un tableau. Bref...
Donc à chaque modif de cette listview je met à jour le tableau de la class :
        '----------------------------------------------------------------------
        ' enregistrement des tableaux & lignes dans la class mon_compte fonction mise à jour
        '----------------------------------------------------------------------
        Dim tableau(ListView1.Items.Count - 1, ListView1.Columns.Count - 1) As String 'je dois pouvoir me passer du tableau mais bon...
        Dim liste As New ListViewItem
        For ligne As Integer = 0 To ListView1.Items.Count - 1
            liste = ListView1.Items(ligne)
            For Colonne As Integer = 0 To ListView1.Columns.Count - 1
                tableau(ligne, Colonne) = liste.SubItems(Colonne).Text
            Next
        Next

        ' attribut les valeurs à sérialiser ! merci Mayzz ^^
        mon_compte.lignes = tableau
        mon_compte.save(ma_sauvegarde)

Du coup maintenant le plus simple pour cacher les lignes de la listview serait biensur de filtrer ce tableau et de n'envoyer que les lignes voulues vers la listview. Mais du coup si l'user fait une modif ajout/modif/supp sur la listview la fonction de mise à jour ci dessus se déclenche détruira toutes les lignes "caché" dans le tableau d'origine de la class, puisque non présente.
J'éspére que je suis à peu prét clair .
Voici ce que j'ai tenté pour l'instant, mais rien n'y fait :
            ' recherche les champs déja pointés 
            If ListView1.Items(ligne).SubItems(6).Text = "1" Then
                               ' change la couleur de la date et du type si c'est pointé
                For i As Integer = 0 To 7
                    ListView1.Items(ligne).SubItems(i).ForeColor = Color.DarkGray
                    'essaye de cacher les lignes déja pointées
                    ' Dim myFont As Font = New System.Drawing.Font("Arial", 1)
                    ' ListView1.Items(ligne).SubItems(i).Font = myFont
' aucun effet sur la police -_-"
                Next i
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 nov. 2009 à 11:03
refond ton code, c'est le mieux que tu aies a faire...

repartir sur une bonne base, et ne conserver la listview que pour l'affichage.

Et oui, la listview n'est pas un cache de données.
Outre ces histoires de filtrage, on formatte souvent les données. On n'affichera pas forcément tous les champs non plus, donc...


Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
25 nov. 2009 à 17:50
C'est bien ce que je pensais.
Bon pour l'instant il est fonctionnel sans ces options qui ne sont là que pour faire "jolie"
Donc je referais une nouvelle base plus tard. Merci pour ton analyse.
@++
0
Rejoignez-nous