2

我有一个这样的 XML 文档:

<?xml version="1.0" encoding="UTF-8"?>
<cars>
    <car type="Wagon" make="Volvo">
        <colours>
            <colour>Red</colour>
            <colour>Yellow</colour>
        </colours>
    </car>
    <car type="Sedan" make="Audi">
        <colours>
            <colour>Green</colour>
            <colour>Blue</colour>
        </colours>
    </car>
</cars>

这是由 ASP.NET XmlDataSource 生成的,它使用 XSL 文件来转换 HTTP URL 的 XML 输出。

我想将 XmlDataSource 绑定到 ASP.NET gridview,但是当使用自动生成列时,只有 type 和 make 属性被绑定。

我希望将汽车的颜色绑定到 CSV 格式的第三列,如下所示:

Type     Make     Colours
Wagon    Volvo    Red, Yellow
Sedan    Audi     Green, Blue

我知道可以修改我的转换文件以将颜色存储在 XML 属性中,但这会使 XmlDataSource 难以过滤颜色。

我计划动态修改 XmlDataSource 的 Xpath 属性,以便过滤显示的数据。

有什么方法可以使用 ASP.NET 实现此功能。我可以使用 .NET Framework 4.0。

4

1 回答 1

2

肯定有一个更简单的方法,但这里有一些东西可以开始......经过大量挖掘后得到了这个。

您需要一个模板字段。在其中您需要放置一个 XmlDataSource 和一个中继器。

将 xmldatasource 指向所考虑的文件。指定前面提到的相同的 http url 和 xslt 转换。在 XPath 中,您需要考虑汽车节点中的所有属性来选择节点

所以对于第一个 xmldatasource,Xpath 看起来像

cars/car[@type='Wagon' and @make='Volvo']/colours/colour

在中继器 itemtemplate 中执行以下操作:

XPath(".")

如果您对此练习的代码示例感兴趣:

http://www.coderun.com/ide/?w=aKnePm185kW3jo0Uzr_s3Q

快乐编码。

于 2012-09-08T19:28:09.677 回答