2012-07-13 96 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

快樂編碼。