複数のドロップダウン メニューとページ分割された YUI データテーブルを使用して、静的データセットの行をフィルター処理できますか?
1 に答える
YUI DataTableなどの各 YAHOO.widget コンポーネントは、レンダリングされた各 YAHOO.widget コンポーネントに入力するために必要なデータを提供するYUI DataSourceコンポーネントを使用します。以下で、それがどのように機能するかを見ることができます
各 YAHOO.widget コンポーネントは、内部でsendRequestメソッドを介して、基礎となる YUI データソースを呼び出します(手順 1 を参照)。次に、sendRequest 署名を見てみましょう
sendRequest(request, callback)
- リクエスト
リモート データの場合、このリクエストは「id=123&name=foo」などのパラメータ/値文字列になります。local data の場合、このリクエストは 123 などのより単純な値である可能性があります。パラメータの指定は無関係である可能性があるため、この値は単に null である可能性があります
- 折り返し電話
以下のように記述できるJavaScriptオブジェクトです(各プロパティに注意)
var callback = {
success:function(request, response, payload) {
/*
* successful request is performed by success property
*/
},
failure:function(request, response, payload) {
/*
* failure request is performed by failure property
*/
},
scope:null,
argument:null
}
したがって、各 YAHOO.widget コンポーネントが sendRequest メソッドを介して内部的に YUI データソースを呼び出すと、上記のように、YAHOO.widget コンポーネント自体のレンダリングを処理する組み込みのコールバック オブジェクトが渡されます。したがって、カスタム動作が必要な場合は、基礎となる YUI データソースを呼び出し、カスタム コールバック オブジェクトを渡す必要があります。次のように、YUI データソースによって提供されるデータをフィルタリングします。
var datatable = // YUI datatable settings goes here
各変更イベントを各選択に添付するには、次を使用できます
YAHOO.util.Event.addListener("sex", "change", function(e) {
var value = e.getTarget(e).value;
if(YAHOO.lang.isValue(value)) {
/**
* Notice i am retrieving The underlying datasource To make a call To sendRequest method
*/
datatable.getDataSource().sendRequest(null, {
success:function(request, response, payload) {
/**
* because scope property (see bellow) refers To The datatable
* this keyword can be used To get a reference To The datatable
*/
/**
* initializeTable method clear any data stored by The datatable
*/
this.initializeTable();
var rs = response.results;
var filtered = [];
for(var i = 0; i < rs.length; i++) {
/**
* Is The sex property equal To The value selected by The user ?
*/
if(rs[i]["sex"] == value) {
filtered[filtered.length] = rs[i];
}
}
this.getRecordSet().setRecords(filtered, 0);
// Update UI
this.render();
},
scope:datatable,
argument:null
});
}
});
テストされていませんが、問題なく動作すると確信しています。