1

问候!

我有一些这样的 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,其中绑定了许多值。我想将 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 属性?

4

2 回答 2

2

XPathSelect 不会返回可以像这样直接绑定的 DataSource。就像您绑定了 FormView 并且您的绑定使用 XPath("...") 而不是 Bind("...") 一样,DropDownList 也有同样的问题。使用您的属性构建标准数据源并将 DDL 绑定到该数据源,或者使用生成选择选项标签或类似内容的 ListView 滚动您自己的 HTML。

于 2009-01-28T02:56:51.917 回答
-1

请原谅我对 ASP 不熟悉,但您的路径不应该包含 @ 吗?

<asp:DropDownList ID="MyDdl" runat="server" DataSource='<%# XPathSelect("Areas/*") %>' DataTextField=" @name " DataValueField=" @value " />

于 2008-12-10T20:07:08.580 回答