ASP.NET Web Forms - Fichier XML


Nous pouvons lier un fichier XML à des contrôles de liste.


Un fichier XML

Voici un fichier XML nommé "countries.xml" :

<?xml version="1.0" encoding="ISO-8859-1"?>

<countries>

<country>
<text>Norvège</text>
<value>N</value>
</country>

<country>
<text>Suède</text>
<value>S</value>
</country>

<country>
<text>France</text>
<value>F</value>
</country>

<country>
<text>Italie</text>
<value>I</value>
</country>

</countries>

Voir ce fichier XML :countries.xml


Lier DataSet aux contrôles de liste

Tout d'abord, importez l'espace de noms "System.Data". Nous avons besoin de cet espace de noms pour travailler avec l'objet DataSet. Incluez la directive suivante en haut de la page .aspx :

<%@ Import Namespace="System.Data" %>

Ensuite, créez un DataSet pour le fichier XML et chargez le fichier XML dans le DataSet lors du premier chargement de la page :

<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New DataSet
mycountries.ReadXml(MapPath("countries.xml"))
end if
end sub

Pour lier des données au contrôle RadioButtonList, créez d'abord un contrôle RadioButtonList dans la page .aspx (sans aucun élément asp:ListItem) :

<html>
<body>

<form runat="server">
<asp:RadioButtonList id="rb" runat="server" AutoPostBack="True" />
</form>

</body>
</html>

Ajoutez ensuite le script qui crée le DataSet XML et lie les valeurs du DataSet XML au contrôle RadioButtonList :

<%@ Import Namespace="System.Data" %>

<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New DataSet
mycountries.ReadXml(MapPath("countries.xml"))
rb.DataSource=mycountries
rb.DataValueField="value"
rb.DataTextField="text"
rb.DataBind()
end if
end sub
</script>

<html>
<body>

<form runat="server">
<asp:RadioButtonList id="rb" runat="server"
AutoPostBack="True" onSelectedIndexChanged="displayMessage" />
</form>

</body>
</html>

Ensuite, nous ajoutons une sous-routine qui sera exécutée lorsque l'utilisateur clique sur un élément du contrôle RadioButtonList. Lorsqu'un bouton radio est cliqué, une ligne de texte apparaîtra dans l'étiquette :

Exemple

<%@ Import Namespace="System.Data" %>

<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New DataSet
mycountries.ReadXml(MapPath("countries.xml"))
rb.DataSource=mycountries
rb.DataValueField="value"
rb.DataTextField="text"
rb.DataBind()
end if
end sub

sub displayMessage(s as Object,e As EventArgs)
lbl1.text="Votre pays préféré est : " & rb.SelectedItem.Text
end sub
</script>

<html>
<body>

<form runat="server">
<asp:RadioButtonList id="rb" runat="server"
AutoPostBack="True" onSelectedIndexChanged="displayMessage" />
<p><asp:label id="lbl1" runat="server" /></p>
</form>

</body>
</html>

Démo »

Autres extensions