ソートするフィールドを動的に変化させることができるようになりました。さらに、フィールドの種類がテキストなのか数値なのかによって、ソートの方法を自動的に切り替えることもできるようになりました。仕上げに、ソートの方向(昇順・降順)も動的に制御できるようにしましょう。これは、order-by属性値の先頭の1文字を「+」「-」に相互に入れ換えるスクリプトを作ることで実現できます。
昇順・降順を切り替えるJavaScript |
---|
|
document.XSLDocument.selectSingleNode( )
は「現在の文書中の.XSL文書中の.とある一つの要素」という意味です。「とある一つの要素」とは具体的には( )内のマッチパターンに該当する要素です。マッチパターン*/xsl:template[@match='RESULTSET']//xsl:apply-templates[@select='ROW']/@order-by
は「どこから始めてもいい -> その子要素で[match属性値がRESULTSETである]xsl:template要素 -> その子孫要素で[select属性値がROWである]xsl:apply-templates要素 -> そのorder-by属性値」という意味で、この条件にマッチするのは現在のXSL文書中には一カ所しかありません。これによって、左辺のkeyNodeという変数に、「order-by="+COL[0]/DATA"」が代入されます。if(orderCodeが「-」){だった場合、降順に切り替える}else{そうじゃなかった場合、昇順に切り替える}
これで、changeOrder("-")を実行すると、order-by属性値の「+」が「-」に置換されて、ソートが降順になります。changeOrder("+")を実行すれば、order-by属性値の「-」が「+」に置換されて、ソートが昇順になります。では、ブラウザのウインドウ上にこの関数を呼び出すための仕掛けを組み込んでおきましょう。
changeOrder( )関数を呼び出すための仕掛け |
---|
|
画面上の「↑」をクリックするとchangeOrder('-')が実行されて、order-by属性値が降順に切り替わります。さて、降順に切り替えた後は、昇順に切り替えられるようにしなければなりません。関数実行時に
>>