Sérialization d'un listview

Inxday2005 Messages postés 3 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 12 novembre 2005 - 11 mai 2005 à 03:15
inxday Messages postés 8 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 13 mai 2005 - 16 mai 2005 à 02:00
Bonjour,

J'essaye de faire une 'sauvegarde' du contenu d'un listView au moyen d'une 'xmlSerialization' ...

Mais j'y arrive pas ... Quelqu'un d'entre vous arrive-t-il à faire se genre de sauvegarde par ce moyen ou un autre ???

D'avance merci à ceux qui m'aideront (et à ceux qui aurait bien voulu mais qui rame un peu, comme moi ;-)

Geoffroy

14 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
11 mai 2005 à 08:08
Salut,
Pour pouvoir sérializer un object, il faut que la class soit marquée Serializable (avec l'attribut [Serializable()]). Si ce n'est pas le cas, tu dois écrire ta propre méthode de sérialization qui fera le travail. Pour des détails supplémentaires, je te renvoie au nombreux codes parlant de ce sujet sur ce site....
PS : Si juste certaine infos t'intéresse dans ton listView, tu peux créer une nouvelle classe avec l'attribut [Serializable()] et y stocker ce que tu veux, puis sérializer cet object au lieu de ton listView, si réellement c'est pas faisable ()

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
11 mai 2005 à 08:59
Salut,

En plus sérialiser le contrôle lui même je ne pense pas que ce soit une bonne idée.
Par contre tu devrais pouvoir sauvegarder ses items en les récupérant sous forme de collection ou tableau de ListViewItem et en te servant de AddRange pour les "recharger".

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
inxday Messages postés 8 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 13 mai 2005
11 mai 2005 à 12:18
Tout d'abord merci ...



J'ai lu ce qu'ils disent sur MSDN et effectivement il doit être
possible de créer une objet contenant un tableau dans lequel on peut
mettre les item du listview au moyen de ListViewItemCollection.CopyTo(
array, index); Et de serializer cet objet ...



Vous ai-je bien compris ???

- si je met le tableau en public, je peux le serializer telquel ???



Geoffroy



Ps : le but final est d'obtenir une classe PersoListView(); qui est editable et auto-sauvegardable, je suis parti de cet article pour la partie éditable (arrangé à ma sauce).
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
11 mai 2005 à 12:29
Ouep :-)

Mais tu n'as pas forcement besoin d'un niveau d'accessibilité public.
D'aileurs logiquement tu fais l'extraction du tableau d'items au moment de la sérailisation, donc dans la même méthode.

Cocoricoooooooo !!!!
coq
MVP Visual C#
0

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

Posez votre question
inxday Messages postés 8 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 13 mai 2005
12 mai 2005 à 00:09
Salut,



Heeee, ben je vais voir ça alors plus en profondeur, mais j'avais lu
que la serialisation xml ne pouvant se faire que sur des éléments
public ... En même temps, je pense avoir vu un article sur la
serialization des array's qui pourra peut être m'être utile ...



En tout cas, je remercie la communauté C# qui m'est d'un grand secours
pour mon petit problème ( en particulier je fais un grand cocorico ;-)
) et je mettrai le résultat de mes recherches et l'aboutissement de mon
travail le plus rapidement possible en ligne.



Geoffroy
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
12 mai 2005 à 08:19
Dans le cas de la sérialisation d'une instance de classe (ou structure) oui, seuls ses membres public peuvent être sérialisés, mais l'instance de la classe elle même n'as pas besoin de l'être, du moment qu'elle a un niveau d'accessibilité suffisant pour etre accessible à l'endroit où s'effectue la serialisation.

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
inxday Messages postés 8 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 13 mai 2005
12 mai 2005 à 18:07
Ok je commence à comprendre ,



J'ai avancé dans mes recherche, je vais travailler en serialisant un
listViewItem, et j'ajouterai ce qu'il faut pour ajouter le nombre de
colonnes et le titre de celles-ci dans le fichier.



Cependant c'est dommage que ce ne soit pas "natif" ...



Encore merci, et bientôt un article avec source pour prolonger la liste ...



Geoffroy
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
12 mai 2005 à 18:32
"Cependant c'est dommage que ce ne soit pas "natif" ..."
d'un autre côté on n'a pas besoin de ce genre de fonctionnalité tous les jours sur un listview :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
inxday Messages postés 8 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 13 mai 2005
12 mai 2005 à 20:19
Heeeee, bon ça va ...



Cependant, mon premier prog en C# en a besoin, à moins que j'ai
encore réussi à compliqué alors qu'on peut faire simple ??? De
toute façon, le plus simple pour faire une liste de course, c'était de
prendre un bout de papier et un crayon avec une gomme ;-) On dira
que c'est pour la beauté du code ....



Geoffroy
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
12 mai 2005 à 20:50
Ba theoriquement ton listview ne doit te servir qu'a afficher les données, pas servir de conteneur.
Donc tu devrais serialiser/deserialiser le "conteneur" (ArrayList etc) et recharger le listview avec.
Tu as peut etre l'architecture de l'appli à revoir :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
inxday Messages postés 8 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 13 mai 2005
13 mai 2005 à 01:57
Salut Coq, salut les autres,



Tu as probablement raison, mais étant entièrement autodidacte, on
ne m'a jamais appris la "bonne" méthode ... je vais dans le sens où les
choses me font aller ...



Quand tu parles d'un arraylist, tu veux dire une liste liée ??? parce
qu'effectivement ça devrait le faire mais j'ai pas trop envie d'écrire
une classe de list liée, ni de me servir d'un code tier que je
comprends à moitier ... et de ramer la dedans en plus ...



(Rmq : Ca marche comment les pointeurs en c# ???)



Finalement, j'hérite un listview, (qui comprend un listviewitem ( sans
doute une sorte de listliée simplifiée )) j'y ajoute un tableau
avec les titres des colonnes et je serialize/deserialize le tout
. C'est sans doute pas une conception très pro, je te le concède, mais
ce n'est que pour faire une petite appli perso et progresser ( toutes
les bonnes idées m'intéressent donc ... Faites de moi un guru ;-)
Et si ça marche, peut-on vraiment dire que c'est pas la bonne méthode
?? Je me suis laisser dire que le plus intéressant était l'objectif et
non les moyens mis en oeuvre (je parle de petites applications peu
gourmande en cpu , mémoire ...)



Voila donc un long discourt pour dire que je suis ouvert à tout, mais
que j'ai assez peu de connaissance en fait ( encore moins en c# -
1er prog - je vient de delphi et c/c++ en mode console ).



Geoffroy
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
13 mai 2005 à 09:43
Ca tombe bien, moi aussi je suis complètement autodidacte.
Je parlais de la classe ArrayList du framework.
Tu devrais jeter un oeil aux classes des namespaces System.Collections et System.Collections.Specialized, y'a plein de trucs sympa ;-)

PS : les pointeurs oublie les, sauf cas bien précis qui demandent des perfs impossible à obtenir en managé et nécessitant du code unsafe.

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
inxday Messages postés 8 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 13 mai 2005
13 mai 2005 à 16:24
Salut coq,



Un grand merci pour ces infos, je suis en train de lire et il y a beaucoup de choses intéressantes dans tes liens !!!



Plus on en sait et plus on sait qu'on ne sait rien ...



Geoffroy
0
inxday Messages postés 8 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 13 mai 2005
16 mai 2005 à 02:00
Salut tout le monde,
comme prévu, j'ai ajouté un tutoriel sur la sérialization d'un listview avec entête ...

http://www.csharpfr.com/tutorial.aspx?ID=112

Si vous avez des commentaires, n'hésitez pas ... Je suis toujours prêt à apprendre de mes erreurs ...

Finalement je remercie Coq pour ses conseils, même si finalement je ne me suis pas servi d'arraylist, ni de collection. C'est pas perdu pour autant au contraire !

Geoffroy
0
Rejoignez-nous