tkd1984
Messages postés12Date d'inscriptionlundi 15 janvier 2007StatutMembreDernière intervention10 mars 2009
-
1 janv. 2008 à 21:25
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 2013
-
26 janv. 2008 à 21:32
Bonjour a tous le monde
j'aimerais serialiser un usercontrol qui porte le nom "Table",voici les propriétés de la classe qui le représente:
//nom pour la table graphiquement
private String tableName;
public String nomTable
{
get { return tableName; }
set { tableName = value; }
}
//nom pour la table ds le programme
private String table_Name;
public String nom_Table
{
get { return table_Name; }
set { table_Name = value; }
}
private List listattributs = new List();
public List Details
{
get { return listattributs; }
set { listattributs = value; }
}
lors de l'execution j'ai le message d'erreur suivant:
Une erreur s'est produite lors de la réflexion du type'MiniAgl.Table'
et merci d'avance
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 1 janv. 2008 à 23:44
Salut,
Si tu utilises un navigateur du genre Opera, il se peut que les sauts de lignes sautent.
Passe par la textbox "classique" (voir lien en bas) ou par FireFox ou Internet Explorer.
tkd1984
Messages postés12Date d'inscriptionlundi 15 janvier 2007StatutMembreDernière intervention10 mars 2009 2 janv. 2008 à 00:29
Bonjour,
oui c'est juste c'est navigateur Opera,On recomence a nouvau:
j'aimerais serialiser un usercontrol qui porte le nom "Table",voici les propriétés de la classe qui le représente:
//nom pour la table graphiquement
privateString tableName;
publicString nomTable
{
get { return tableName; }
set { tableName = value; }
}
//nom pour la table ds le programme
private String table_Name;
public String nom_Table
{
get { return table_Name; }
set { table_Name = value; }
}
privateList listattributs = new List();
publicList Details
{
get { return listattributs;}
set { listattributs = value; }
}
lors de l'execution j'ai le message d'erreur suivant:
Une erreur s'est produite lors de la réflexion du type'MiniAgl.Table'
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 2 janv. 2008 à 10:28
Qu'entend tu par UserControl ? Réellement une classe héritant de la classe UserControl ?
Sinon détaille l'erreur (ne zappe pas le type de l'exception notamment), mais à vue de nez c'est un problème que l'on a quand la classe a sérialiser ne possède pas de constructeur par défaut.
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 2 janv. 2008 à 14:43
Hi,
S'il s'agit de Serializer un UserControl, ce n'est pas possible, cette classe n'étant pas marquée [Serializable]
Il faut alors implémenter son propre Serializer ou séparer clairement la partie UI/Data pour ne Serializer que les data.
tkd1984
Messages postés12Date d'inscriptionlundi 15 janvier 2007StatutMembreDernière intervention10 mars 2009 7 janv. 2008 à 23:52
bonjour a tous le monde
et merçi "Bidou" pour votre aide ;j'ai enfin arriver a une solution aprés une long et dire recherche,voila la solution:
Dans la classe "Table" qui hérite de Usercontrole j'ai implemente 3 methods :
public System.Xml.Schema.XmlSchema GetSchema()
{
return null;
}
public void ReadXml(System.Xml.XmlReader reader)
{
//Pas encor programmer
}
public void WriteXml(System.Xml.XmlWriter writer)
{
int i = 0;
foreach (Attributs val in Details)
{
writer.WriteStartElement("Attribut" + i);
writer.WriteElementString("ClePrimaire", Convert.ToString(val.clePrimaire));
writer.WriteElementString("NomAttribut", val.nomAttribut);
writer.WriteElementString("TypeAttribut", val.typeAttribut);
writer.WriteElementString("CleEtranger", Convert.ToString(val.cleEtrangere));
writer.WriteEndElement(); // close Items tag
i++;
}
writer.WriteEndElement(); // close Items tag
writer.WriteEndElement(); // close Items tag
writer.WriteEndDocument();
writer.Flush();
writer.Close();
}
et les lignes d'appel du form1 c'est:
foreach (Table tbl in this.panel1.Controls)
{
XmlTextWriter writer = new XmlTextWriter(sfdEnregistrer.FileName, null);
writer.Formatting = Formatting.Indented;
tbl.WriteXml(writer);
}
Le probléme c'est que si exists 2 tables dans le "panel1.controls" il écrase les précedents, donc il reste dans le fichier les donnes de la dernier table parcourit.
Exist-il une fonction pour ouvrir le fichier xml en mode ajoute,
car je cherche partout ,j'essai XmlDocument c'est le meme probléme
et merci d'avance...
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 8 janv. 2008 à 00:17
Un fichier XML devant garder une certaine structure, il n'est pas directement possible d'ajouter des données à la suite comme dans un fichier texte par exemple.
On peut alors passer par un XmlDocument qui se chargera d'updater le DOM de façon à conserver une structure consistante. Voir les méthodes AppendChild & Co de la classe XmlDocument.
tkd1984
Messages postés12Date d'inscriptionlundi 15 janvier 2007StatutMembreDernière intervention10 mars 2009 8 janv. 2008 à 01:14
merçi bouceaup pour votre reponce
j'ai une question:
maintenant que j'utilise XmlDocument je travaille pas avec IXMLSerializable (XmlReader-XmlWriter)je travaille seulement avec XmlDocument si je trompe,
et merci d'avance
don3omario
Messages postés7Date d'inscriptionvendredi 4 janvier 2008StatutMembreDernière intervention27 janvier 2008 26 janv. 2008 à 18:05
slt a tt le monde, reponse a "bidou" :
pourrais-tu nous expliquer ce que t'as voulu dire par " Il faut alors implémenter son propre Serializer ou séparer clairement la partie UI/Data pour ne Serializer que les data"
comment on fait pour separer la partie UI/Data ?
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 26 janv. 2008 à 18:47
Une bonne partie des objets qui se trouvent par exemple dans System.Drawing ne sont pas Serializable.
Parfois, on a pas besoin de connaître l'état exacte d'un objet, mais seulement quelques éléments de celui-ci. Il s'agit alors de ne s'occuper que de ces éléments là.
Pour un UserControl, typiquement, est-il vraiment nécessaire de tout Serialiser? Certainement que non. Surtout qu'un UserControl peut-être très complexe, ce qui donner un fichier binaire (ou xml) très gros (donc potentiellement très lent à écrire/lire/transmettre).
Il s'agit donc de s'intéresser uniquement aux attributs qui nous intéresse. C'est ce que je voulais dire par cette phrase...
don3omario
Messages postés7Date d'inscriptionvendredi 4 janvier 2008StatutMembreDernière intervention27 janvier 2008 26 janv. 2008 à 21:02
slt a tt le monde
voici mon pb : j'ai une classe qui s'appelle projet, qui a comme proprietes nom et une liste de tables ( table est aussi une classe).
j'aimerais savoir comment s'appelle la fct qui indique dans mon cas : projet courant pour ne pas tomber dans le pb de l'initialisation.
msg d'erreur : Use of unassigned local variable 'p'