OVH Cloud OVH Cloud

Dropdownlist et xml

12 réponses
Avatar
Damien RICHARD
Comment remplir un dropdownlist avec un fichier XML?
Il n'y a pas de méthode ReadXML...

Merci

10 réponses

1 2
Avatar
Zazar
Bonjour,

Comment remplir un dropdownlist avec un fichier XML?
Il n'y a pas de méthode ReadXML...



Lisez votre fichier XML à l'aide d'un DataSet, et utilisez le DataSet comme
source de données pour votre DropDownList.

--
Zazar
Avatar
Damien RICHARD
C'est ce que j'ai fais.
Par contre, comment attribuer le champ "description" à la propriété
datatextfield et "numero" à la propriété datavaluefield
la structure de mon fichier xml est la suivante

<root>
<type>
<description>ma description</description>
<numero>1</numero>
</type>
</root>

Merci

"Zazar" a écrit dans le message
de news: epvoz$
Bonjour,

> Comment remplir un dropdownlist avec un fichier XML?
> Il n'y a pas de méthode ReadXML...

Lisez votre fichier XML à l'aide d'un DataSet, et utilisez le DataSet


comme
source de données pour votre DropDownList.

--
Zazar




Avatar
Zazar
> Par contre, comment attribuer le champ "description" à la propriété
datatextfield et "numero" à la propriété datavaluefield
la structure de mon fichier xml est la suivante

<root>
<type>
<description>ma description</description>
<numero>1</numero>
</type>
</root>



Vous voulez dire que vous ne connaissez pas à priori les noms des champs ?
Si c'est ça, il vous suffit de prendre les noms de colonnes de la table de
votre dataset. Mais par contre, vous allez devoir arbitrairement décider que
la colonne 0 c'est le texte, et que la colonne 1 c'est la valeur (ou
l'inverse).

--
Zazar
Avatar
Pascal Mercier
Bonjour,
Une dropdownlist utilise la propriété DataSource pour se relier (DataBind)
aux données qui vont la peupler. Il faut fournir à cette propriété n'importe
quel objet qui implémente IList et/ou ICollection. Donc dans votre cas, la
solution est simple : il faut désérialiser votre XML en un objet qui
implémente les interfaces attendues par la dropdownlist et c'est gagné.
Grosso modo toutes les collections de System.Collections et
System.Collections.Specialized implémente ces interfaces...la boucle est
bouclée.

Le SDK du FW .NET regorge d'exemples de sérialisation/désérialisation.

Cordialement,
Pascal Mercier
Microsoft France - MCS

"Damien RICHARD" wrote in message
news:
Comment remplir un dropdownlist avec un fichier XML?
Il n'y a pas de méthode ReadXML...

Merci




Avatar
Damien RICHARD
En fait, je souhaite que les champs de mon dataset soit l'élément
description et l'élément numero

"Zazar" a écrit dans le message
de news: #
> Par contre, comment attribuer le champ "description" à la propriété
> datatextfield et "numero" à la propriété datavaluefield
> la structure de mon fichier xml est la suivante
>
> <root>
> <type>
> <description>ma description</description>
> <numero>1</numero>
> </type>
> </root>

Vous voulez dire que vous ne connaissez pas à priori les noms des champs ?
Si c'est ça, il vous suffit de prendre les noms de colonnes de la table de
votre dataset. Mais par contre, vous allez devoir arbitrairement décider


que
la colonne 0 c'est le texte, et que la colonne 1 c'est la valeur (ou
l'inverse).

--
Zazar




Avatar
Zazar
> En fait, je souhaite que les champs de mon dataset soit l'élément
description et l'élément numero



Si les champs de votre xml sont description et numero, ceux du dataset le
seront aussi.

--
Zazar
Avatar
Zazar
> > En fait, je souhaite que les champs de mon dataset soit l'élément
> description et l'élément numero

Si les champs de votre xml sont description et numero, ceux du dataset le
seront aussi.



Je crois comprendre votre incompréhension, depuis le début je suis imprécis
dans mes termes et je substitue le dataset et la datatable qu'il contient :

Si vous lisez le fichiez xml que vous avez donné en exemple, le dataset
contiendra une table nommée "type", cette table contiendra 2 colonnes :
description et numero et 1 ligne ayant pour valeurs "ma description" et 1.
C'est la datatable qui doit être la source de données de votre dropdownlist,
non le dataset.
Désolé si c'est ça qui vous a induit en erreur.

--
Zazar
Avatar
Damien RICHARD
Je pense m'en etre sorti, j'arrive bien à remplir mon dropdownlist
Dim ds As New DataSet

ds.ReadXml(Server.MapPath(".") & "TypeMEC.xml")

Dim dt As DataTable = ds.Tables("type")

DropDownList1.DataSource = dt

DropDownList1.DataTextField = dt.Columns("description").ToString

DropDownList1.DataValueField = dt.Columns("numero").ToString

Par contre, si je veux énumérer la valeur de mon champ "description" dans un
label par exemple, comment dois-je procéder

Merci pour votre aide




"Zazar" a écrit dans le message
de news: #
> > En fait, je souhaite que les champs de mon dataset soit l'élément
> > description et l'élément numero
>
> Si les champs de votre xml sont description et numero, ceux du dataset


le
> seront aussi.

Je crois comprendre votre incompréhension, depuis le début je suis


imprécis
dans mes termes et je substitue le dataset et la datatable qu'il contient


:

Si vous lisez le fichiez xml que vous avez donné en exemple, le dataset
contiendra une table nommée "type", cette table contiendra 2 colonnes :
description et numero et 1 ligne ayant pour valeurs "ma description" et 1.
C'est la datatable qui doit être la source de données de votre


dropdownlist,
non le dataset.
Désolé si c'est ça qui vous a induit en erreur.

--
Zazar




Avatar
Zazar
> Dim ds As New DataSet

ds.ReadXml(Server.MapPath(".") & "TypeMEC.xml")

Dim dt As DataTable = ds.Tables("type")

DropDownList1.DataSource = dt

DropDownList1.DataTextField = dt.Columns("description").ToString



DropDownList1.DataTextField = "description";
c'est plus simple.


DropDownList1.DataValueField = dt.Columns("numero").ToString



Voilà, ça c'est la première étape, la seconde c'est de créer un schéma pour
votre fichier xml histoire de ne pas utiliser ça sur n'importe quel fichier,
et de faire le dataset fortement typé associé.

Par contre, si je veux énumérer la valeur de mon champ "description" dans


un
label par exemple, comment dois-je procéder


Je ne comprends pas votre question.
Vous pouvez parcourir toutes les entrées de la DataTable (collection Rows)
et récupérer la valeur du champ "description" pour chacune d'entre elles.
Mais je vois pas ce que le label doit afficher.

--
Zazar
Avatar
Damien RICHARD
Bref, vous me conseillez d'utiliser au maximum des datasets typés?

"Zazar" a écrit dans le message
de news: #
> Dim ds As New DataSet
>
> ds.ReadXml(Server.MapPath(".") & "TypeMEC.xml")
>
> Dim dt As DataTable = ds.Tables("type")
>
> DropDownList1.DataSource = dt
>
> DropDownList1.DataTextField = dt.Columns("description").ToString

DropDownList1.DataTextField = "description";
c'est plus simple.

>
> DropDownList1.DataValueField = dt.Columns("numero").ToString

Voilà, ça c'est la première étape, la seconde c'est de créer un schéma


pour
votre fichier xml histoire de ne pas utiliser ça sur n'importe quel


fichier,
et de faire le dataset fortement typé associé.

> Par contre, si je veux énumérer la valeur de mon champ "description"


dans
un
> label par exemple, comment dois-je procéder
Je ne comprends pas votre question.
Vous pouvez parcourir toutes les entrées de la DataTable (collection Rows)
et récupérer la valeur du champ "description" pour chacune d'entre elles.
Mais je vois pas ce que le label doit afficher.

--
Zazar





1 2