2012-08-29 80 views
0

我有一個XML數據源,它提供了一箇中繼器控制。但是,我有一些問題需要顯示實際數據。ASP中繼器 - 不重複xPath數據

的XML數據源中包含的材料厚度(從一個較大的XML文件中取出)的一個列表,以及價格,大小和尺寸數據一起:

<Thickness> 
    <Thick> 
    <Size label="Thickness: 12"><![CDATA[12]]></Size> 
    <Price>5778</Price> 
    <From>0</From> 
    <To>0</To> 
    </Thick> 
    <Thick> 
    <Size label="Thickness: 22"><![CDATA[22]]></Size> 
    <Price>5919</Price> 
    <From>0</From> 
    <To>0</To> 
    </Thick> 
    ... 
</Thickness> 

我用下面的代碼加載的DataSource:

myThickness.XPath = "/Item[@label='" + tvwMaterials.SelectedNode.Text + "']/Thickness/*"; 
myThickness.DataBind(); 

(其他XPath的東西只是爲了達到厚度的東西)。然後我嘗試將其加載到中繼器(其數據綁定到所述XML數據源),並使用下面的代碼顯示它:

<ItemTemplate> 
    <table> 
     <tr> 
      <td><asp:Label ID="lblThickness" runat="server" Text="Thickness: " /> 
      <asp:TextBox ID="txtThickness" runat="server" Text='<%# XPath("Thick/Size") %>' /> 
     </tr><tr> 
      <td><asp:Label ID="Label2" runat="server" Text="From: " /> 
      <asp:TextBox ID="TextBox1" runat="server" Text='<%# XPath("Thick/From") %>' /> 

     /tr> 
    </table> 
</ItemTemplate> 

這正確地加載控件的數目,但控制不顯示任何數據。如果我在加載事件來改變XPath來:

myThickness.XPath = "/Item[@label='" + tvwMaterials.SelectedNode.Text + "']/Thickness"; 

然後對照確實顯示的數據,但只適用於第一個記錄(12 0)。我對xPAth還不是很熟悉,但還沒有弄清楚厚度是否需要在後面,如果是,我怎麼會在中繼器中複製xPAth來讀出數值。任何人有任何指針,請?

在此先感謝!

回答

2

裝載方法:

myThickness.XPath = "/Item[@label='" + tvwMaterials.SelectedNode.Text + "']/Thickness/Thick"; 
myThickness.DataBind(); 

你的數據源路徑必須是指XML文檔中的重複元素。

<ItemTemplate> 
    <table> 
     <tr> 
      <td><asp:Label ID="lblThickness" runat="server" Text="Thickness: " /> 
      <asp:TextBox ID="txtThickness" runat="server" Text='<%# XPath("Size") %>' /> 
     </tr><tr> 
      <td><asp:Label ID="Label2" runat="server" Text="From: " /> 
      <asp:TextBox ID="TextBox1" runat="server" Text='<%# XPath("From") %>' /> 

     /tr> 
    </table> 
</ItemTemplate> 
+0

謝謝,那曾經工作過! – SchmitzIT