RadioButtonList à l'intérieur du répéteur lié à XmlDataSource
-
10-12-2019 - |
Question
J'ai le XML suivant :
<questions>
<question text="This is a test question?">
<answer value="Yes">
<requirement articleId="2899"/>
</answer>
<answer value="No">
<requirement articleId="2899"/>
</answer>
</question>
</questions>
Et j'ai le balisage suivant dans ma page 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" />
Jusqu'à présent, la seule façon pour que cela fonctionne est de déplacer l'attribut « valeur » du nœud « réponse » dans l'élément (comme ceci : <value>Yes</value>
) et liez-vous à la propriété 'InnerText' du nœud 'answer', puisque XPathSelect renvoie une collection de XmlElement.Ce n'est pas ainsi que je veux procéder, car si l'un des autres nœuds enfants de « réponse » (tels que le nœud « exigence ») a également InnerText, il est concaténé avec « valeur » dans les ListItems de RadioButtonList. .
Des suggestions sur la façon de lier ma RadioButtonList sans modifier le XML ?
La solution
Dans votre RadioButtonList, modifiez votre DataSource comme suit :
DataSource='<%# XPathSelect("answer/@value") %>'