ASP.NET Web Forms - Archivo XML


Podemos enlazar archivos XML a controles de lista.


Un archivo XML

Aquí hay un archivo XML llamado "countries.xml":

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

<countries>

<country>
<text>Norway</text>
<value>N</value>
</country>

<country>
<text>Sweden</text>
<value>S</value>
</country>

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

<country>
<text>Italy</text>
<value>I</value>
</country>

</countries>

Ver este archivo XML:countries.xml


Enlazar DataSet al control List

Primero, importa el espacio de nombres "System.Data". Necesitamos este espacio de nombres para trabajar con el objeto DataSet. Incluye la siguiente directiva en la parte superior de la página .aspx:

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

A continuación, crea un DataSet para el archivo XML y carga este archivo XML en el DataSet cuando la página se cargue por primera vez:

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

Para enlazar datos al control RadioButtonList, primero debes crear un control RadioButtonList (sin ningún elemento asp:ListItem) en la página .aspx:

<html>
<body>

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

</body>
</html>

Luego agrega el script que crea el DataSet XML y enlaza los valores del DataSet XML al control 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>

Luego agregamos una subrutina que se ejecutará cuando el usuario haga clic en un elemento del control RadioButtonList. Cuando se hace clic en un botón de opción, aparece una línea de texto en la etiqueta (label):

Ejemplo

<%@ 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="Your favorite country is: " & 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>

Ver demostración »

Otras extensiones