Привет!
У меня есть такой 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 записи с «Площадь» в качестве текста и без значений.
Я знаю, что мой XML в порядке, потому что в целях тестирования я попытался добавить элемент управления Repeater на страницу следующим образом:
<asp:Repeater ID="MyRepeater" runat="server" DataSource='<%# XPathSelect("Areas/*") %>'>
<ItemTemplate>
<%# XPath("@name") %> - <%# XPath("@value") %><br />
</ItemTemplate>
</asp:Repeater>
И это сработало нормально.
Есть ли что-то, что я делаю неправильно при привязке к раскрывающемуся списку, возможно, со свойствами DataTextField и DataValueField?