0

我有一个提供转发器控件的 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 以读出值。任何人有任何指针,请?

提前致谢!

4

1 回答 1

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>
于 2012-08-29T06:04:28.130 回答