2012-03-09 62 views
0

我有下面的XML:单选按钮列表里面直放站必然的XmlDataSource

<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>)并且绑定到'answer'节点的'InnerText'属性,因为XPathSelect返回的是的XmlElement。这不是我想要去做的,因为如果'answer'的其他任何子节点(例如'require'节点)也具有InnerText,它将与RadioButtonList的ListItems中的'value'一起连接。

有关如何绑定我的RadioButtonList而不更改XML的任何建议?

回答

0

内,您的单选按钮列表,您的数据源更改为以下:

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

+0

真棒!注意:我还必须设置DataTextField =“Value”和DataValueField =“Value” – tjc59 2012-03-09 22:30:07