suethi75
Messages postés101Date d'inscriptionmercredi 5 novembre 2008StatutMembreDernière intervention31 août 2009
-
28 mai 2009 à 21:59
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 2017
-
29 mai 2009 à 07:32
Bonsoir
Je développe un petite application en C# orienté Objet. Cependant, j'ai un soucis.
private void button1_Click(object sender, EventArgs e)
{
mesProgrammes lesprogrammes = new mesProgrammes();
ArrayList tProgrammes = new ArrayList();
tProgrammes= lesprogrammes.chargementDansCollection();
programme ceProgramme = new programme();
for (int i = 0; i < tProgrammes.Count - 1; i++)
{
ceProgramme = (programme)tProgrammes[i];
}
Je voudrais avoir une indication sur le message suivant:
Impossible d'effectuer un cast d'un objet de type 'System.Xml.XmlElement' en type 'concert.programme'. Cette phrase est pointé sur la ligne:
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 28 mai 2009 à 22:14
Bonsoir,
ce message indique que les système est incapable de convertir un objet dans un type donné.
j'imagine que tu as ce message à l'execution, car comme ton ArrayList n'est pas typé, le compilateur ne peut pas savoir que la conversion est impossible.
pour eviter ce genre de surprise à l'execution utilise des collections typées, mà c'est le compilateur qui fera le travail.
est-ce que la methode chargementDansCollection donne bien une collection (arraylist) de programmes ?
au fait, inutile d'initialiser les variables tProgrammes et ceProgramme , car elles sont par la suite forcées.
suethi75
Messages postés101Date d'inscriptionmercredi 5 novembre 2008StatutMembreDernière intervention31 août 2009 28 mai 2009 à 22:43
yes!!!! merci.
J'ai le même soucis dans une autre procédure:
Voici le code:
//POUR ACTUALISER LA DATAGRIDVIEW
private void chargerDatagridview()
{
// Creation des variables
mesProgrammes lesProgrammes = new mesProgrammes();
liste = lesProgrammes.chargementDansCollection();
// Ajout des colonnes dans la datagridview
dgvFormProgramme.Columns.Add(Date);
dgvFormProgramme.Columns.Add(Heure);
dgvFormProgramme.Columns.Add(Lieu);
dgvFormProgramme.Columns.Add(Salle);
dgvFormProgramme.Columns.Add(Id);
int i=0;
// parcourir la collection et afficher dans la datagridview
foreach (XmlElement ligne in liste)
{
//ajout d'une ligne dans la datagriview
dgvFormProgramme.Rows.Add();
// .InnerText pour récupérer la valeur du noeud;
dgvFormProgramme[0, i].Value = ligne.SelectSingleNode("Date").InnerText;
dgvFormProgramme[1, i].Value = ligne.SelectSingleNode("Heure").InnerText;
dgvFormProgramme[2, i].Value = ligne.SelectSingleNode("Lieu").InnerText;
dgvFormProgramme[3, i].Value = ligne.SelectSingleNode("Salle").InnerText;
dgvFormProgramme[4, i].Value = i.ToString(); ;
i++;
}
Le problème est pointé sur le: foreach (XmlElement ligne in liste)
Impossible d'effectuer un cast d'un objet de type 'concert.programme' en type 'System.Xml.XmlElement'.
Merci pout ton aide
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 29 mai 2009 à 07:32
bonjour,
oui c'est normal, si tu as corrigé la methode chargementDansCollection pour generer une liste de "programme"
il te faut maintenant utiliser
foreach (programme ligne in liste)
puis utiliser les champs de la class "programme" pour remplir tes lignes de datadrig
dgvFormProgramme[0, i].Value =ligne.=>ici un champ de la classe programme<=