这是我的要求:
我有一个EditorGrid
根据其关联的ListStore呈现一些行。
ListStore
包含我的模型实例的集合,其中包含一个名为“markeAsDeleted”的属性,该属性在UI的其他位置更新。
我的问题是:
当我的'markAsDeleted'属性为'true'时,如何更改相应行的渲染以使其'禁用'?
我期待的是一种添加到我的EditorGrid
实例的渲染器,它会在模型属性更新时更新行。
由于
答案 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()将模型替换为更新的模型。