7

スクリプトをテストしています:

http://developer.yahoo.com/yui/examples/datatable/dt_xhrjson.html

データを更新(リセット)するボタンを追加したいのですが。変更したすべてのデータをリセットし、最初のデータをリロードします。このコードを追加したので、選択(更新)した後、データがありません:

YAHOO.util.Event.onContentReady("splitbuttonsfromjavascript", function () {

var onMenuItemSelect = function () {

        myDataTable.initializeTable();

        myDataTable.render();

        };

        var aSplitButton5Menu = [

            { text: "Refresh", value: 1, onclick: { fn: onMenuItemSelect } }

        ];

        var oSplitButton5 = new YAHOO.widget.Button({ type: "split",  label: "Refresh table", name: "splitbutton", menu: aSplitButton5Menu, container: this });

    });

mydataTableを更新するためにonMenuItemSelectで何を使用する必要がありますか?


サンプルの「city」と「rating」を変更するためにいくつかの変更を加えました:http: //developer.yahoo.com/yui/examples/datatable/dt_xhrjson.html

ここで、ボタンを使用してMyTableをリセットしたいと思います(そしてデフォルトのデータセットをリロードします)。コードを使用するとき、ボタンをクリックした後、すべてをクリアし、デフォルトのデータは再ロードされません(ボタンクリック後に「レコードが見つかりません」があります)。

デフォルトデータをリロードするにはどうすればよいですか?

4

5 に答える 5

10

Gourneau の回答が一番だと思いますが、いい感じが 1 つ欠けています。「Loading...」メッセージを表示するには、showTableMessage 関数を呼び出す必要があります。

myDataTable.showTableMessage("Loading...");
myDataTable.getDataSource().sendRequest('', { success: myDataTable.onDataReturnInitializeTable, scope: myDataTable });

リクエストが完了すると、onDataReturnInitializeTable 関数はテーブル メッセージを自動的にクリアします。

これもブログに載せました。

于 2010-01-08T18:03:42.220 に答える
5

Gourneau が投稿した方法 (あちこちで言及されています) を機能させることができなかったので、この小さなハックを思いつきました:

   function updateTable(){
      sortState = theDataTable.getState().sortedBy
      var sort = sortState ? sortState.key : "id";
      var dir = sortState ? sortState.dir : "yui-dt-desc";
      theDataTable.sortColumn(theDataTable.getColumn(sort),dir);
   };

現在の並べ替えメソッドを見つけてから、並べ替えを再度実行するように指示する sortColumn を呼び出すと、データが更新されます。これにより、ページネーションも整頓されます。これを検索ボックスといくつかのフィルターで使用して、それらの値を変更し、それに応じてテーブルを更新できるようにします。

于 2009-06-12T02:23:05.693 に答える
4

DataTable インスタンス myTable があると仮定します。

myTable.render() はテーブルを再描画します。myTable.initializeTable() は、並べ替えや選択を含むすべての状態を吹き飛ばし、再描画します

-エリック

于 2009-03-04T23:03:17.777 に答える
2

ボタンにこの関数を呼び出させるとうまくいくと思います:

myDataTable.getDataSource().sendRequest('',
{ success: myDataTable.onDataReturnInitializeTable,scope: myDataTable});
于 2009-04-24T16:49:05.520 に答える
2

必要なソリューションのためにここにすべてのコードを適切に投稿できるとは思いませんが、Yahoo の Satyam (少なくとも YUI への主要な貢献者) には、Datatable に拡張機能を追加した再クエリ メソッドがあり、投稿されています。その例です。私はこれを使用しましたが、特にテーブルの検索機能が必要な場合に、美しく機能します。

ここにリンクがありますが、「Satyam requery」の下で、さらに例やデータテーブルのバージョンにより適した例を検索することもできます。

http://www.satyam.com.ar/yui/2.6.0/requery.html

-ジェイソン

ps サーバー側のデータを使用している場合は、onDataReturnInitializeTable メソッドを利用するソリューションが役立ちますが、Satyam のソリューションは、ページネーションを追跡するだけでなく、これも考慮していると思います。

于 2011-02-25T20:08:23.640 に答える