1

这是我的要求:

我有一个EditorGrid根据其关联的 ListStore 呈现一些行。

有一个我的模型实例的ListStore集合,其中有一个名为“markeAsDeleted”的属性,该属性在 UI 的其他地方更新。

我的问题是:

当我的 'markAsDeleted' 属性为 'true' 时,如何更改相应行的呈现以将其变为“禁用”?

我期待的是一种添加到我的EditorGrid实例的渲染器,它会随着模型属性的更新而更新行。

谢谢

4

2 回答 2

2

使用过滤隐藏列将是您最好的选择。

如果您设置store.setMonitoChanges(true);,那么我相信它会在商店中的模型发生任何更改并从那里触发 storeUpdate 时进行协调,您可以重新应用您的过滤器(如果它不会自动执行此操作);

例子

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

编辑:在阅读了另一个答案的评论后,我注意到您正在使用 Grid 过滤器来过滤您可以在商店中轻松使用 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 回答