1

私の問題を十分に説明していることを願っています..ここに行きます:

YUI データ テーブルがあり、JSON を介してサーバー側の一連のレコードを取得し、データを入力します。

ユーザーはヘッダーをクリックして、6 つの列のうち 3 つの列のデータを並べ替えることができます (列ごとにカスタムの並べ替え機能を使用しています)。並べ替えはクライアント側で行われます。

ユーザーがデータを並べ替えるとき、表示されている列の 1 つから値の完全なリストを取得できる必要があります。ページにレンダリングされるものだけでなく、利用可能なすべてのデータが必要です。ページネーションによって隠されているデータを含める必要があります。

何か案は?DataTable の handleDataReturnPayload メソッドと doBeforeLoadData メソッドを試しましたが、どちらも元のソートされていないデータを返します。

私は本当にここで立ち往生しており、このソートされたリストを取得することに依存する機能に依存するクライアントを持っています。

前もって感謝します。

4

3 に答える 3

2

YUI Forumsの Satyam は、私の質問に完璧に答えてくれました。

データは実際には RecordSet に格納されます。いつでもアクセスして見ることができ、画面に表示されているように並べ替えられますが、表示されているかどうかに関係なく、すべてのデータが含まれています。

メソッド getRecordset() はそれへの参照を提供し、そのレコードをループできます。

columnSortEvent をリッスンして、並べ替えが発生したことを通知できます。

columnSortEvent イベントをサブスクライブし、datatable.getRecordSet().getRecords() によって返された配列をループ処理しました。

于 2010-01-07T15:48:46.950 に答える
0

データテーブルに表示されていないデータセットから情報を取得する方法に関する情報を探しているこの質問に出くわしました。表示したいフィールドの前に非表示のデータをデータソースに配置すると、空白になりますが、(columnsオブジェクトで定義されているように)レンダリングされる最後のフィールドの後に配置すると、非表示になりません。レンダリングしますが、レコードからアクセスできます)。

var columns = [
    {key:"Whatchamacallits", children:[
        {key:"name" },
        {key:"price" }
    ]}
];
var ds = new YAHOO.util.DataSource('index.php...');
oDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
oDataSource.responseSchema = {
    fields:["name","price","id"]
};
var dt = new YAHOO.widget.DataTable("dt-id", columns, ds, {});
dt.subscribe("rowClickEvent", dt.onEventSelectRow);
dt.subscribe("rowSelectEvent", function(p){ alert(p.getData('id'); });
于 2010-02-01T22:08:49.530 に答える
0

これを YUI フォーラム ( http://yulibrary.com/forum/ ) に投稿することをお勧めします。ここは、DataTable の問題に関するサポートを受けるのに最適な場所です。

于 2010-01-07T07:07:28.453 に答える