4

私のページの 1 つに dojo.datagrid があります。Datagrid とそのストア (URL を呼び出して) は、宣言型メソッドによって作成されます。動的/プログラマティックではありません。

データグリッドのすぐ下に div (データグリッドからのデータをほとんど必要としない) を表示する JavaScript メソッドを実行する必要があります。データグリッドの読み込みが完了した後にのみ div を表示する必要があります。その前ではありません。

データグリッドの onload completed のようなイベントを探しています。dojo.datagrid で行うイベントはありますか? イベントの dojo.Datagrid ドキュメントのリストに表示されません。

Dojo データグリッドのオンロードが完了したことを確認する方法はありますか?

これを処理するために dojo.connect を使用する方法はありますか?

これを行う方法があれば教えてください...

ありがとう、ラージ。

4

4 に答える 4

5

データグリッド自体は、利用可能なすべてのデータを実際にロードすることはなく、ストア内のデータのサブセレクションのみを表示しています。

onload イベントをキャッチするには、ストア イベントに関連付ける必要があります。ストアは多くの場所からデータをロードできるため、onComplete 関数をグリッド ストアの fetch メソッドに渡す必要があります。

grid.store.fetch({onComplete : function (items) { // Do something }});

プログラムでストアを作成し、onComplete リスナーで fetch を呼び出すこともできます。ストアの onComplete リスナー内のアイテムの変更が完了したら、myGrid.setStore(myStore); を呼び出します。

于 2011-03-29T10:25:48.697 に答える
3

には、と接続できるDataGridイベントがあります。で始まることに注意してください。したがって、これは非公開/保護された種類のイベントであると想定されており、その動作は Dojo の新しいバージョンで変更される可能性があります。Dojo 1.6 でうまく機能することはわかっています。_onFetchCompletedojo.connect_

于 2012-01-31T09:11:51.350 に答える
3

アレックスがすでに指摘したように、(残念ながら) プライベート_onFetchCompleteイベントに反応することができます。dojo 1.7 では、次のように dojo.aspect を使用してこれを実現できます。

require(["dojo/aspect", "dojox/grid/DataGrid", ...], function(aspect, DataGrid, ...)
    var myGrid = new DataGrid({ ... });
    aspect.after(myGrid, "_onFetchComplete", function() {
        // Do something with myGrid...    
    });
});
于 2012-03-28T07:32:37.833 に答える
0

タイマーを設定して、データがロードされたかどうかを確認し、ロードが完了するまで 1 秒ごとに実行できます (setSelectedIndex は true を返します)。

private var load_check:uint;

    /* start the interval timer when the app is initialized */
protected function init ():void
{
    load_check = setInterval(getTime, 500); // 1/2 second
}
private function getTime():void
{
    if ( !datagrid.setSelectedIndex (0))
        return;
    clearInterval(load_check); // data loaded!
}
于 2011-10-29T11:19:09.430 に答える