Repeater中的RadioButtonList绑定到XmlDataSource

时间:2012-03-09 14:51:57

标签: asp.net xml xmldatasource

我有以下XML:

<questions>
<question text="This is a test question?">
<answer value="Yes">
 <requirement articleId="2899"/>
</answer>
<answer value="No">
  <requirement articleId="2899"/>
</answer>
</question>
</questions>

我的ASPX页面中有以下标记:

<asp:Repeater ID="rptQuestions" runat="server" DataSourceID="xdsQuestions">
<ItemTemplate>
    <p>
        <asp:Label ID="lblText" runat="server" Text='<%# Eval("text") %>' />
    </p>
    <div>
        <asp:RadioButtonList ID="rblAnswers" runat="server" RepeatDirection="Horizontal"
            RepeatLayout="Flow" AutoPostBack="true" OnSelectedIndexChanged="rblAnswers_SelectedIndexChanged"
            DataSource='<%# XPathSelect("answer") %>' DataTextField="value" DataValueField="value" />
    </div>
</ItemTemplate>
</asp:Repeater>
<asp:XmlDataSource ID="xdsQuestions" runat="server" DataFile="~/App_Data/QA.xml"
XPath="./questions/question" />

到目前为止,我能够使其工作的唯一方法是将'answer'节点的'value'属性移动到元素中(如:<value>Yes</value>)并绑定到' “回答”节点的“InnerText”属性,因为XPathSelect正在返回XmlElement的集合。这不是我想要的方法,因为如果'answer'的任何其他子节点(例如'requirement'节点)也有InnerText,它会与RadioButtonList的ListItem中的'value'连接起来

有关如何在不更改XML的情况下绑定我的RadioButtonList的任何建议吗?

1 个答案:

答案 0 :(得分:0)

在RadioButtonList中,将您的DataSource更改为以下内容:

DataSource='<%# XPathSelect("answer/@value") %>'