将XML绑定到ASP.NET Gridview

时间:2012-07-13 12:56:09

标签: asp.net xml data-binding gridview

我有一个这样的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网格视图,但是在使用自动生成列时,只绑定了type和make属性。

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

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

据我所知,可以修改我的转换文件以将颜色存储在XML属性中,但这样就很难在颜色上过滤XmlDataSource。

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

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

1 个答案:

答案 0 :(得分:2)

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

你需要一个TemplateField。在它里面你需要放置一个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

快乐的编码。