问候!
我有一些像这样的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>
我在我的网络表单上有一个FormView,其中绑定了许多值。我想将Areas子节点绑定到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个带有“Area”的条目作为文本而没有值。
我知道我的XML没问题,因为出于测试目的,我尝试在页面上抛出Repeater控件,如下所示:
<asp:Repeater ID="MyRepeater" runat="server" DataSource='<%# XPathSelect("Areas/*") %>'>
<ItemTemplate>
<%# XPath("@name") %> - <%# XPath("@value") %><br />
</ItemTemplate>
</asp:Repeater>
这很好。
绑定到下拉列表时是否存在错误,可能是DataTextField和DataValueField属性?
答案 0 :(得分:2)
XPathSelect不会返回可以直接绑定的DataSource。就像你有FormView绑定和你的绑定使用XPath(“...”)而不是绑定(“...”),你有DropDownList相同的问题。使用您的属性构建标准DataSource并将DDL绑定到该属性,或者使用生成select选项标签或类似内容的ListView滚动您自己的HTML。
答案 1 :(得分:-1)
原谅我对ASP的不熟悉,但你的路径不应该包括@?
&lt; asp:DropDownList ID =“MyDdl”runat =“server”DataSource ='&lt;%#XPathSelect(“Areas / *”)%&gt;' DataTextField =“ @name ”DataValueField =“ @value ”/&gt;