0

2 つのフォーム フィールド、1 つの選択リスト、および別のグリッド パネルがあります。選択リストの選択を変更すると、その変更イベントがトリガーされdatasourcechange、グリッド パネルがリッスンするカスタム イベントが呼び出されます。これら 2 つのコンポーネントは、異なる形式で使用され、常に一緒に使用されるとは限らないため、別々にする必要があります。

問題は、グリッド パネルを並べ替えると、フィルター処理されていないレコードのリストが取得されることです。利用可能な場合は、選択リストからフィルターを再適用したいと思います。

試してみましremoteSort: falseたが、選択リストがパネルがリッスンしているイベントを発生させる方法と同様のことができると考えていましたが、並べ替えイベントまたはクリックのいずれかを介して、列ヘッダーがいつクリックされたかを判断する方法が必要ですヘッダー自体のイベント、これに対するベストプラクティスのアプローチを推奨できる人はいますか?

Extjs 4.0.5 を使用しており、4.1.x にアップグレードできません。どんな支援も大歓迎です!

4

1 に答える 1

1

それはよくある問題です。あなたがしなければならないことは、次のようなものを実装することです:

  1. 選択リストの選択を変更するときは、選択した値をグリッドのストアに保存します。

    var store = getGridStore(); // このメソッドを実装する必要があります store.selectedValue = theSelectedValue;

  2. 次に、リクエストを実行する前にフィルターを適用するために、ストアのロード イベントをサブスクライブする必要があります。これは、次のようなものです。

    getGridStore().on('beforeload', function (store) { store.proxy.extraParams = {filteredByValue: store.selectedValue }, this);

あなたの実装方法はわかりませんが、これは一般的な考え方を説明しています。

于 2012-11-05T19:55:32.117 に答える