1

ここに私の要求があります:

EditorGrid関連する ListStore に基づいていくつかの行をレンダリングするがあります。

には、UI の他の場所で更新される「markeAsDeleted」というListStore属性を持つモデルのインスタンスのコレクションがあります。

私の質問は:

「markAsDeleted」属性が「true」の場合、対応する行のレンダリングを変更して「無効」にするにはどうすればよいですか?

私が期待しているのはEditorGrid、モデル属性が更新されると行を更新するインスタンスに追加する一種のレンドラーです。

ありがとう

4

2 に答える 2

2

フィルタリングで列を非表示にするのが最善です。

設定store.setMonitoChanges(true);すると、ストア内のそのモデルが変更されたときに再調整され、そこから storeUpdate が起動され、フィルターを再適用できます (とにかく自動的に行わない場合)。

store.addStoreListener(new StoreListener<BaseModelData>() {
  public void storeUpdate(StoreEvent<M> se) {
      store.applyFilters("");
  }
})

編集: 別の回答のコメントを読んだ後、グリッド フィルターを使用して、ストアで addFilter を簡単に使用できる列をフィルター処理していることに気付きました。

store.addFilter(new StoreFilter<BaseModelData>() {
   public boolean select(Store<T> store, T parent, T item, String property) {
      return !item.get("markAsDeleted");
   }
});
于 2012-04-24T13:40:19.727 に答える
0

GXT は、グリッドのストアが変更されると、グリッドが再レンダリングされるようにします。したがって、アプリケーションの他の部分がモデルで更新される場合は、ストアで同じモデルが明示的に更新されるようにしてください。

store.remove()、store.removeAll()、store.addAll() を使用して、モデルを更新されたモデルに置き換えることができます。

于 2012-04-24T05:41:49.380 に答える