我有一个这样的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。
答案 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
快乐的编码。