2008-12-10 126 views
1

問候!將DropDownList數據源綁定到XPathSelect

我有一些這樣的XML:

<Root> 
    <MainSection> 
     <SomeNode>Some Node Value</SomeNode> 
     <SomeOtherNode>Some Other Node Value</SomeOtherNode> 
     <Areas> 
      <Area someattribute="aaa" name="Alpha" value="0" /> 
      <Area someattribute="bbb" name="Beta" value="1" /> 
      <Area someattribute="ddd" name="Delta" value="2" /> 
     </Areas> 
    </MainSection> 
</Root> 

我有我的web窗體上的FormView控件中,許多價值觀的約束。我想向區子節點綁定到一個DropDownList像這樣:

<asp:FormView ID="MyFormView" runat="server" DataSourceID="MyXmlDataSource"> 
    <ItemTemplate> 
     <h1><%# XPath("SomeNode")%></h1> 
     <asp:Label ID="MyLabel" runat="server" AssociatedControlID="MyDdl" Text='<%# XPath("SomeOtherNode")%>' /> 
     <asp:DropDownList ID="MyDdl" runat="server" DataSource='<%# XPathSelect("Areas/*") %>' DataTextField="name" DataValueField="value"></asp:DropDownList> 
    </ItemTemplate> 
</asp:FormView> 
<asp:XmlDataSource ID="MyXmlDataSource" runat="server" XPath="Root/MainSection" /> 

不幸的是,而不是看到我所期待的下拉列表中的數據,我看到3項以「區」爲文字和沒有值。

我知道我的XML是好的,因爲出於測試目的,我想在頁面上扔Repeater控件,像這樣:

<asp:Repeater ID="MyRepeater" runat="server" DataSource='<%# XPathSelect("Areas/*") %>'> 
    <ItemTemplate> 
     <%# XPath("@name") %> - <%# XPath("@value") %><br /> 
    </ItemTemplate> 
</asp:Repeater> 

這工作得很好。

是否有什麼,我綁定到下拉列表時,可能與DataTextField和DataValueField屬性做錯了?

回答

2

XPathSelect不會返回可以像那樣直接綁定的DataSource。就像你有FormView綁定和你的綁定使用XPath(「...」)而不是綁定(「...」)一樣,你也有與DropDownList相同的問題。或者用你的屬性構建一個標準的數據源,然後將DDL綁定到該屬性上,或者使用生成select選項標籤或類似東西的ListView滾動你自己的HTML。

-1

請原諒我對ASP的不熟悉,但不應該包含@?

< ASP:DropDownList的ID = 「MyDdl」 RUNAT = 「服務器」 數據源= '<%#XPathSelect( 「區域/ *」)%>' DataTextField =」 @name 「DataValueField =」 @value 「/>

+0

否。這樣做會導致「DataBinding:'System.Xml.XmlElement'不包含名稱爲」@name「異常的屬性。 – Bullines 2008-12-10 20:14:12

相關問題