Databinding de un DropDownList con XmlDataSource

Ahora en ASP.NET 2.0, nosotros tenemos varios controles DataSource que nos aceleran el trabajo cuando tenemos que recuperar datos de las diversas fuentes de datos, y hasta fue liberado un control RSSDataSource que es una descarga aparte, y viene dentro del RSS ToolKit. Pero en este post vamos hablar del control dataSource XmlDataSource.


Para enlazar un XmlDataSource a un Repeater o DataList usamos XPath, sino miren el siguiente ejemplo.


Pero ahora, que pasa si queremos enlazar un XmlDataSource a un DropDownList. Si tuviéramos nuestros elementos con atributos no hubiera problema:


  <AREA  AREcod=”1″ ARENombre=”Area1″ AREOrden=”1″ > </AREA>


Es decir al enlazar directamente el atributo DataTextField y DataValueField del XmlDataSource funcionaría correctamente. Pero normalmente nuestro XML no tiene este modelo sino:


   <AREA><ARECod>1</ARECod><ARENombre>Area1</ARENombre>…</AREA>


Y he ahí el problema si ejecutamos la página, vamos a obtener el siguiente problema: DataBinding: ‘System.Web.UI.WebControls.XmlDataSourceNodeDescriptor’ does not contain a property with the name ‘ARENombre’.


El problema es que los Atributos de los elementos del XML son interpretados como Propiedades, los elementos no.


Encontré esta solución, pero lo que hacía era leer el xml en un datatable y desde ahí hacer el enlace.


Encontré una segunda solución, usando un archivo de transformación XSLT, podemos cambiar la estructura del archivo XML. Y así trabajamos directamente sobre el archivo y usando el XMLDataSource.


Y con el archivo de transformación sólo habria que hacer esto:



Ejecutamos, y ahora si veremos nuestro combito con los datos del XML.


Saludos,


Post cruzado

2 comentarios sobre “Databinding de un DropDownList con XmlDataSource”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *