我有一个提供转发器控件的 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 数据源)并使用以下代码显示它:
<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 以读出值。任何人有任何指针,请?
提前致谢!