使用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的控件说明。

posted @ 2009-04-28 12:21  Devid  阅读(1496)  评论(0编辑  收藏  举报