更新模型属性时禁用EditorGrid行

时间:2012-04-23 11:01:11

标签: gxt

这是我的要求:

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

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

我的问题是:

当我的'markAsDeleted'属性为'true'时,如何更改相应行的渲染以使其'禁用'?

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

由于

2 个答案:

答案 0 :(得分: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");
   }
});

答案 1 :(得分:0)

GXT确保当您的网格商店被修改时,网格会重新渲染。因此,当您的应用程序的其他部分确实在模型上更新时,请确保在商店中明确更新相同的模型。

您可以使用store.remove(),store.removeAll(),store.addAll()将模型替换为更新的模型。