2012-07-13 55 views
2

我有一个这样的XML文档:绑定XML到ASP.NET的GridView

<?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> 

这是由一种使用XSL文件转换一个HTTP URL的XML输出的ASP.NET的XmlDataSource产生。

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

我想绑定到第三列CSV格式像这样的车的颜色:

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

我明白,可以修改我的转换文件存储在XML属性的颜色,但那么这将难以在颜色上过滤XmlDataSource。

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

有什么办法可以使用ASP.NET来实现这个功能。我拥有.NET Framework 4.0。

+0

你需要给你一个ItemTemplate字段,并在其中使用类似中继器的东西...你可以发布xmldatasource的标记。 – deostroll 2012-09-08 15:24:18

回答

2

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

您需要一个TemplateField。在它里面,你需要放置一个XmlDataSource和一个中继器。

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

所以对于第一的XmlDataSource节点中的XPath看起来像

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

中Repeater的ItemTemplate做这样的事情:

的XPath( “”)

如果您有兴趣为这个练习的代码示例:

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

快乐编码。