这是我的要求:
我有一个EditorGrid
根据其关联的 ListStore 呈现一些行。
有一个我的模型实例的ListStore
集合,其中有一个名为“markeAsDeleted”的属性,该属性在 UI 的其他地方更新。
我的问题是:
当我的 'markAsDeleted' 属性为 'true' 时,如何更改相应行的呈现以将其变为“禁用”?
我期待的是一种添加到我的EditorGrid
实例的渲染器,它会随着模型属性的更新而更新行。
谢谢
这是我的要求:
我有一个EditorGrid
根据其关联的 ListStore 呈现一些行。
有一个我的模型实例的ListStore
集合,其中有一个名为“markeAsDeleted”的属性,该属性在 UI 的其他地方更新。
我的问题是:
当我的 'markAsDeleted' 属性为 'true' 时,如何更改相应行的呈现以将其变为“禁用”?
我期待的是一种添加到我的EditorGrid
实例的渲染器,它会随着模型属性的更新而更新行。
谢谢
使用过滤隐藏列将是您最好的选择。
如果您设置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");
}
});
GXT 确保当您的网格存储被修改时,网格被重新渲染。因此,当您的应用程序的其他部分确实在模型上更新时,请确保在商店中明确更新相同的模型。
您可以使用 store.remove()、store.removeAll()、store.addAll() 将模型替换为更新后的模型。