【发布时间】:2022-01-23 18:47:36
【问题描述】:
我有以下问题:当我的 Treegrid 第一次加载时,所有正确添加的根数据。但是当我在 TreeGrid 中滚动时,数据会再次被拾取并添加到 Treegrid。
有谁知道如何在滚动时停用 Treegrid 中的延迟加载?
这是我创建 Treegrid 的方法
private Component createCategoriesTree() {
treeGrid.setHeight("100%");
treeGrid.addComponentHierarchyColumn(productCategory -> getProductCategoryName(productCategory)).setHeader("Kategorie").setSortable(false);
ProductCategory root = productCategoriesService.getRootCategory();
HierarchicalDataProvider dataProvider = new AbstractBackEndHierarchicalDataProvider<ProductCategory, Void>() {
@Override
public int getChildCount(HierarchicalQuery<ProductCategory, Void> query) {
if (query.getParent() == null) {
List<ProductCategory> list = productCategoriesService.findByParentId(root.getId());
return (int) list.size();
} else {
List<ProductCategory> list = productCategoriesService.findByParentId(query.getParent().getId());
return (int) list.size();
}
}
@Override
public boolean hasChildren(ProductCategory item) {
List<ProductCategory> list = productCategoriesService.findByParentId(item.getId());
if (list != null && list.size() > 0) {
return true;
} else {
return false;
}
}
@Override
protected Stream<ProductCategory> fetchChildrenFromBackEnd(HierarchicalQuery<ProductCategory, Void> query) {
if (query.getParent() == null) {
return productCategoriesService.findByParentId(root.getId()).stream();
} else {
return productCategoriesService.findByParentId(query.getParent().getId()).stream();
}
}
};
treeGrid.setDataProvider(dataProvider);
return treeGrid;
}
【问题讨论】:
-
你的
ProductCategory有正确的等号和哈希码吗? -
是的!谢谢。我想我找到了解决方案,我将 fetchChildrenFromBackEnd() 更改为: return productCategoriesService.findByParentIdOrderByCategoryNameAsc(root.getId()).stream().skip(query.getOffset()).limit(query.getLimit());跳过和限制方法成功了。
标签: vaadin vaadin-flow