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>

これは、XSL ファイルを使用して HTTP URL の XML 出力を変換する ASP.NET XmlDataSource によって生成されます。

XmlDataSource を ASP.NET グリッドビューにバインドしたいのですが、自動生成列を使用すると、type 属性と make 属性のみがバインドされます。

次のように、車の色を CSV 形式の 3 番目の列にバインドします。

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

間違いなくもっと簡単な方法があるに違いありませんが、ここで何かを始めましょう...たくさん掘り下げた後にこれを手に入れました。

TemplateField が必要です。その中に XmlDataSource とリピーターを配置する必要があります。

xmldatasource を対象のファイルに向けます。前述と同じ http url と xslt 変換を指定します。XPath では、car ノードのすべての属性を考慮してノードを選択する必要があります。

最初の 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 に答える