2

dojox.grid.DataGridを使用してデータを表示し、ユーザーが1つ以上の行を選択して、他のアクションを実行するアイテムを強調表示できるようにしています。

私の問題は、グリッドがインデックスを使用して選択された行を記憶することです。clientSortをオンにした場合、行を並べ替えると行の順序が変わりますが、並べ替え前に選択インデックスを占めるようになった行に選択が変更されます。

これに対抗するために、選択の変更ごとに選択された行のアイテムを取得し、onSortイベントが発生すると、選択したアイテムコレクション内の各アイテムでgetItemIndex(item)を使用して新しい行インデックスを取得し、それらを使用して再選択しますインデックス。

さて、私の問題は、DataGridが一度に特定の行数のデータをロードして(ページという用語を使用して設定された行数を定義する)、パフォーマンスを向上させることです。並べ替えが発生すると、新しい並べ替え順序でデータが再読み込みされますが、rowsPerPage値(デフォルトは40)までです。新しい行がグリッドにロードされていないアイテムにgetItemIndexを使用しようとすると、インデックスが-1になります。getItemIndex()関数は、ユーザーが下にスクロールして行がロードされた場合にのみインデックスを返します。

選択を復元するためにページの読み込みが発生したときに発生するイベントが見つかりません。1.3.2のソースコードを調べましたが、何も見つかりません。いくつかのプライベート関数に接続しようとしましたが、機能しません。

誰かがこれに出くわし、修正を見つけましたか?

前もって感謝します。

4

1 に答える 1

1

私は答えを見つけました。dojox.grid.DataGridには、次のページが要求するたびに発生するプライベートイベント(_onFetchComplete)があります。setTimeoutを使用して、300の期間後に復元機能を実行します。

仕事は終わりました!

于 2010-10-28T07:54:30.017 に答える