如何使用XML数据源将xml文件绑定到下拉列表?

时间:2012-09-05 22:10:37

标签: asp.net xml

如何使用xmldatasource将xml文件绑定到asp.net下拉列表?如果我这样做,我会看到空的下拉列表。

ASP.NET

<asp:DropDownList runat="server" ID="ddlDEMO"  DataValueField="BILLAB" DataTextField="BILLAB" DataSourceID="xdsDemo">
</asp:DropDownList> 

<asp:XmlDataSource ID="xdsDemo" runat="server" DataFile="~/XML/Bills.xml" 
                        XPath="/Bills/Bill"></asp:XmlDataSource>

XML:

<?xml version="1.0" encoding="utf-8" ?>
<Bills>
  <Bill>
    <BILLID>1</BILLID>
    <BILLAB>ONE</BILLAB>
  </Bill>
</Bills>

2 个答案:

答案 0 :(得分:2)

它适用于属性,而不是元素。如果您的XML看起来像这样,那么这将有用:

<?xml version="1.0" encoding="utf-8" ?>
<Bills>
  <Bill BILLID="1" BILLAB="ONE">
  </Bill>
</Bills>

您可以使用转换来修复它。看这里: http://kanakaiah.wordpress.com/2008/05/06/using-xslt-files-with-the-new-xmldatasource-control/

根据该链接中的解决方案,您应该像这样编写xsl:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="Bills">
    <Bills>
      <xsl:apply-templates select="Bill"/>
    </Bills>
  </xsl:template>
  <xsl:template match="Bill">
    <Bill>
      <xsl:attribute name="BILLID">
        <xsl:value-of select="BILLID"/>
      </xsl:attribute>
      <xsl:attribute name="BILLAB">
        <xsl:value-of select="BILLAB"/>
      </xsl:attribute>
    </BILL>
  </xsl:template>
</xsl:stylesheet>

答案 1 :(得分:0)

我会创建一个类或一个结构,并从/到xml序列化/反序列化到我的类/结构。以下是序列化xml文档的方法:

http://support.microsoft.com/kb/815813

在此之后,我创建了一个我的类/结构的通用List,它更容易绑定到任何东西并进行操作。

祝你好运。