Help me!!! pour sauvegarder ma listview svp (vb.net) [Résolu]

Signaler
Messages postés
440
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
6 mai 2010
-
Messages postés
20
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
5 avril 2009
-
Salut à tous,

J'ai un code du genre


Dim Dates As String
            Dim i As Integer
            For i = 1 To ListView.Items.Count
                Dates = Dates & ListView.Items(i).SubItems(0).Text & vbcrlf & ListView.Items(i).SubItems(1).Text & vbcrlf & ListView.Items(i).SubItems(2).Text & vbcrlf & ListView.Items(i).SubItems(3).Text & vbcrlf & ListView.Items(i).SubItems(4).Text & vbcrlf 
            Next i
Retour = SaveFileDialog.ShowDialog()
            If Retour = 1 Then
                FileOpen(1, SaveFileDialog.FileName, OpenMode.Binary)
                FilePut(1, Dates)
                FileClose(1)
end if


Et je n'y arrive pô a chaque foi ca bug je sais vraiment pô koi faire (j'ai tout essayer) et puis en même temps comment on pe faire pour r'ouvrir ma Listview car j'ai peur de galêrer????

ATTENTION C'EST EN VB.NET

Merci d'avance

4 réponses

Messages postés
134
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
6 juin 2007

Déjà, tu as surement un problème lors de ta boucle pour récupérer tes infos :
i varie de 1 à NBdeItems
Mais les items sont indexés à partir de 0, donc le premier item est 0 et le dernier est NBdeItems-1
Fais donc varier i de 0 à NBdeItems-1, ca évitera de planter dans ta boucle

Pour l'écriture dans le fichier, moi j'utilise plutôt IO, mais bon, je suppose que ta méthode doit marcher

Pour retrouver tes infos, il faut que tu aies une marque qui te permette de savoir quand tu change de ligne dans ton listview.
Perso, en général, j'écris les choses ainsi :

item1|item2|item3|item4
item1|item2|item3|item4
item1|item2|item3|item4

donc en gros, une ligne de ton fichier=une ligne du listview
et le caractère | sert de séparateur entre les items

du coup, pour lire ton fichier :

dim val() as string
dim fs as new io.fillestream("taratata.txt",open)
dim str as new io.streamreader(fs)
dim lvi as listviewitem

do until str.peek=-1
val=str.readline.split("|")
lvi=listview.items.add(val(0))
for i=1 to val.lenght-1
lvi.subitems.add(val(i))
next
loop

str.close
fs.close

Je copie ce code de mémoire. Il y a donc surement des choses qui manquent (je sais par exemple que items.add réclame aussi la taille de la colone et je sais plus quoi.

Je te laisse le soint de peaufiner tout ça...

Est-ce que cela répond à ton problème ?
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Messages postés
440
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
6 mai 2010
1
Salut à tous,

c cool ca marche je te remercie bcp
je met le code pour ceux ke ca interresse car j'ai dû le modifier

Pour SAUVEGARDER une ListView de 5 colonnes
Retour = SaveFileDialog.ShowDialog()
            If Retour = 1 Then
                Dim Dates As String
                Dim i As Integer
                For i = 0 To ListView.Items.Count - 1
                    Dates = Dates & ListView.Items(i).SubItems(0).Text & "|" & ListView.Items(i).SubItems(1).Text & "|" & ListView.Items(i).SubItems(2).Text & "|" & ListView.Items(i).SubItems(3).Text & "|" & ListView.Items(i).SubItems(4).Text & vbCrLf
                Next i
                FileOpen(1, SaveFileDialog.FileName, OpenMode.Binary)
                FilePut(1, Dates)
                FileClose(1)
end if


Ensuite pour OUVRIR
Dim Retour As Integer
        Retour = OpenFiledialog.ShowDialog()
        If Retour = 1 Then
            FileOpen(1, OpenFiledialog.FileName, OpenMode.Binary)
            FileClose(1)

        Dim val() As String
            Dim fs As New IO.FileStream(OpenFiledialog.FileName, FileMode.Open)
        Dim str As New IO.StreamReader(fs)
        Dim lvi As ListViewItem
        Dim i As Integer
        Do Until str.Peek = -1
            val = str.ReadLine.Split("|")
            lvi = ListView.Items.Add(val(0))
            For i = 1 To val.Length - 1
                lvi.SubItems.Add(val(i))
            Next
        Loop

        str.Close()
        fs.Close()



Voila normalement ca dvrai fonctionner

merci encore à toi alicvb!!!!

ATTENTION C'EST EN VB.NET

Merci d'avance
Messages postés
440
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
6 mai 2010
1
Salut à tous,

just un truc k'il ne fonctionne pô c en fait kan je sauvegarde un é ou un ö (en fait toutes les lettres ki ont des accents) bah kan on sauvegarde ca marche mai par contre kan on l'ouvre il me supprime systêmatiquement la lettre c bizarre ex: Grêce (A la sauvegarde)
Quan on l'ouvre ca donne Grce.

ATTENTION C'EST EN VB.NET

Merci d'avance
Messages postés
20
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
5 avril 2009

Bonjour à tous,

Alors voilà, je me permets de relancer le post pour ce problème d'accent... Est-ce que quelqu'un a une idée ?

Merci d'avance