如何使用Repeater使用单个XMLDataSource

时间:2013-11-25 11:12:24

标签: c# asp.net xml

我需要你的帮助。我有这个xml文件,我需要阅读和显示它,这里是我的xml:

<tarification cle="979987abdcad675e13e016a6ud4777782">
    <gamme reference="new-securite-sante">
        <tarif formule="NS1">24.02</tarif>
        <tarif formule="NS2">26.64</tarif>
    </gamme>
    <gamme reference="new-equilibre-sante">
        <tarif formule="125">27.95</tarif>
        <tarif formule="150">34.95</tarif>
        <tarif formule="200">41.70</tarif>
    </gamme>
    <gamme reference="new-full-sante">
        <tarif formule="125">33.21</tarif>
        <tarif formule="150">38.71</tarif>
        <tarif formule="200">44.92</tarif>
    </gamme>
    <gamme reference="new-performance">
        <tarif formule="125">36.45</tarif>
        <tarif formule="150">43.33</tarif>
        <tarif formule="200">48.17</tarif>
    </gamme>
</tarification>

,代码是:

<asp:XmlDataSource
    runat="server"
    id="XmlDataSource2"
    DataFile="myfile.xml" />

 <asp:Repeater ID="Repeater3" runat="server"  DataSourceID="XmlDataSource2">
            <ItemTemplate>
                <div id="" runat="server">                        
                  <h2>Formule : <%# XPath ("@formule") %>'></h2>                        
                  <h2 class="buy"> <%# XPath ("tarif") %>"    
                  <sub>€/ Mois</sub></h2>   
                </div>
            </ItemTemplate>
        </asp:Repeater>

我希望我的结果是这样的:

<div>
    <h2>Formule : NS1</h2>
    <h2 class="buy"> 24.02 <sub>€/ Mois</sub></h2>
</div>
<div>
    <h2>Formule : NS2</h2>
    <h2 class="buy"> 26.64 <sub>€/ Mois</sub></h2>
</div>
<div>
    <h2>Formule : 125</h2>
    <h2 class="buy"> 27.95 <sub>€/ Mois</sub></h2>
</div>
我做错了什么?请指正。


hier是正确的代码,代码c#

 XmlDocument doc = new XmlDocument();

    doc.Load("http://xxxx-xmlfile.com");

    XmlNodeList nodes =
    doc.SelectNodes("tarification/gamme/tarif");
    rpMyRepeater.DataSource = nodes;
    rpMyRepeater.DataBind();

 <div>
    <h2>Formule :  <%#((System.Xml.XmlNode)Container.DataItem).Attributes["formule"].Value %></h2>
    <h2 class="buy"><%#((System.Xml.XmlNode)Container.DataItem).InnerText%> <sub>€/ Mois</sub></h2>
</div>

它就像一个魅力:)

2 个答案:

答案 0 :(得分:0)

问题似乎是“formule”属性在“tarif”对象上,而不是“gamme”对象。所以你可以改变它:

在XMLDataSource上,添加XPath属性:

<asp:XmlDataSource
runat="server"
id="XmlDataSource2"
XPath="/tarification/gamme//tarif"
DataFile="myfile.xml" />

然后更改模板:

<h2>Formule : <%# XPath ("@formule") %></h2>                        
<h2 class="buy"> <%# XPath (".") %>

或者您可以更改数据以使它们处于同一级别。

答案 1 :(得分:0)

你快到了!在转发器中更改Itemtempalte中的XPath。它应该看起来像:

<h2>Formule : <%# XPath ("tarif/@formule") %></h2>                        
<h2 class="buy"> <%# XPath ("tarif") %><sub>€/ Mois</sub></h2>  

这里生成了html:

<div>
    <div id="Repeater3_Div1_0">                        
        <h2>Formule : NS1</h2>                        
        <h2 class="buy"> 24.02 <sub>€/ Mois</sub></h2>   
    </div>                
    <div id="Repeater3_Div1_1">                        
        <h2>Formule : 125</h2>                        
        <h2 class="buy"> 27.95 <sub>€/ Mois</sub></h2>   
    </div>                
    <div id="Repeater3_Div1_2">                        
        <h2>Formule : 125</h2>                        
        <h2 class="buy"> 33.21 <sub>€/ Mois</sub></h2>   
    </div>                
    <div id="Repeater3_Div1_3">                        
        <h2>Formule : 125</h2>                        
        <h2 class="buy"> 36.45 <sub>€/ Mois</sub></h2>   
    </div>
 </div>