使用xmldatasource作dropdownlist的数据源
有一段xml格式的文档如下:
<xml version=1.0>
<books>
<book id="1" title="XML Programming" />
<book id="2" title="CLR via C#" />
<book id="3" title="Programming Asp.net 3.5" />
</books>
1. 新建一个asp.net页面。
2. 拖一个xmldatasource到新建的页面上。
3. 拖一个dropdownlist到新建的页面上。
4. 为xmldatasource选择一个数据源,这里选择上面的xml。
5. 为dropdownlist选择刚刚初始化好的xmldatasource,然后分别选择DataTextField 和DataValueField.
预览就可以看到dropdownlist使用的是刚才的xml数据源。
察看源代码是这样子的
<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="XmlDataSource1" DataTextField="title" DataValueField="id">
</asp:DropDownList>
如果xml的格式是这样的呢?
<xml version="1.0">
<books>
<book>
<id>1</id>
<title>XML Programming</title>
</book>
<book>
<id>2</id>
<title>CLR via C#</title>
</book>
<book>
<id>3</id>
<title>Programming Asp.net 3.5</title>
</book>
</books>
如果我们选择这个xml文档作为xmldatasource的数据源,那么我们将得不到刚才的结果。在默认情况下,framework 把<book>的属性当作一张类似数据库的表:
id title
1 XML Programming
2 CLR via C#
3 Programming Asp.net 3.5
那么我们如何能使结构都是element的上面的xml也能被dropdownlist读取呢?这里就要用到xslt来对xml文档进行转换。下面的xsl文件可以帮助我们进行转换。
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<books>
<xsl:apply-templates select="//book"></xsl:apply-templates>
</books>
</xsl:template>
<xsl:template match="book">
<book>
<xsl:attribute name="id">
<xsl:value-of select="id"/>
</xsl:attribute>
<xsl:attribute name="title">
<xsl:value-of select="title"/>
</xsl:attribute>
</book>
</xsl:template>
</xsl:stylesheet>
欢迎讨论!~~将陆续写gridview以及一些其他支持xmldatasource的控件说明。