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" />

残念ながら、ドロップダウン リストに期待するデータではなく、テキストとして「Area」があり、値がない 3 つのエントリが表示されます。

テスト目的で、ページに Repeater コントロールを次のようにスローしようとしたため、XML が問題ないことはわかっています。

<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 をバインドし、バインドで Bind("...") ではなく XPath("...") を使用したのと同じように、DropDownList にも同じ問題があります。属性を使用して標準の DataSource を構築し、それに 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 に答える