2011-01-04 8 views
1

翻訳ユーティリティで作業しているものを、翻訳コード、参照テキスト、およびターゲットテキストの3列のデータグリッドに配置します。Flex DataGridによってフィルタが自動的に適用されないようにします

DataGridのdataProviderプロパティは、ArrayCollectionインスタンスにバインドされています。ユーザーはグリッドを編集することができ、編集が成功すると、setItemAt()メソッドを使用して基礎となるコレクションが更新されます。コレクションには、特定のテキストを簡単に見つけるためのフィルタ機能もあります。

ユーザーが 'フィルタを適用'ボタンをクリックすると、フィルタ機能が更新されます。これはうまくいく。私が持っている問題は、基になるコレクション項目がフィルタに従わない方法で変更されるとすぐに行が隠されることです。行はすぐに非表示になっていますが、あまりユーザーフレンドリーではありません。 「フィルタを適用」ボタンが押されたときだけ、行は非表示にする(または表示する)必要があります。

私はこれを実現する方法を探しています。

答えて

0

質問して周りを見回した後、私はこれを行う本当の方法がないと判断しました。私は自分自身でフィルタリングを行い、「主キー」のリストのみを保持することで、私の問題を解決しました。その後、そのリストを使用してコレクションをフィルタリングします。

結果は、レコードが変更されたときに行が突然消えないということです。これは私の望むものです。

0

DataGridのdataProviderがArrayCollectionインスタンスにバインドされているとしますか?

とにかく、DataGridのdataProviderをフィルタリングする場合は、DataGridから行が削除されます。あなたはそれらを再度追加するフィルタを削除することができ、概念的にこのような何か、:。

collection.filterFunction = null; 
collection.refresh(); 

あなたが複数のコンポーネントのソースとしてのdataProviderを使用している場合は、それぞれに異なるたListCollectionViewを使用して別々のフィルタリングを保つことができます1つではなく、同じソースで

component1.dataProvider = ListCollectionView(mySource); 
component1.dataProvider = ListCollectionView(mySource); 

1つのdataProviderにフィルタを適用しても、もう一方のフィルタには影響しません。
これで問題が解決しない場合は、問題の原因を広げて、サンプルコードを提供する必要があります。

+0

同じソースで異なるビューを使用しても、私は1つのビューのみを使用しているので問題は解決しませんが、提案に感謝します! 問題は、ソース(collection.setItemAt)を更新すると、ビューがフィルタを再適用することにもなります。私はそれを防ぐ手段があるのか​​疑問に思いました。 – xastor

+0

私が知っているわけではありません。それが期待される行動になるようです。そのことを防ぐためにコンポーネントを拡張する必要があります。可能なら。 – JeffryHouser

+0

私は、refresh()が明示的に呼び出されたときにのみフィルタを適用する方法を期待していました。私はそれが起こらないと思う:s – xastor

関連する問題