我有一个XML数据源,它提供转发器控件。但是,我在解决实际数据时遇到了一些问题。
XML DataSource包含材料厚度列表(取自较大的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 DataSource)并使用以下代码显示它:
<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以读出值。有人有任何指示吗?
提前致谢!
答案 0 :(得分: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>