我知道我需要使用grid.getDataProvider()
来获取ListDataProvider
(假设我已经将一个List
发送到了grid.setItems()
)。为了计算页脚总数,我执行以下操作:
Collection myItems = ((ListDataProvider)grid.getDataProvider()).getItems();
for(MyItem myItem : myItems)
total += myItem.getValue();
footer.getCell(footerCell).setText(format(total));
但是如果我加上页脚,这就会失败,因为它会计算我的网格中的所有项目。例如,如果我添加:
((ListDataProvider)grid.getDataProvider()).addFilter(myFilter);
由于页脚不是过滤后的总计,而是完整的网格总计,因此顶部的代码会失败。
话虽如此,有人建议我使用:
grid.getDataCommunicator().fetchItemsWithRange(...);
然而,这是一种受保护的方法。假设我创建自己的子类,我甚至不知道该方法的工作原理。
但即使如此,这似乎过于复杂,而且应该是简单的事情,特别是如果有能力在网格中添加筛选功能。
因此,我的重要问题是:如果我筛选了网格,如何计算Vaadin 8 Grid的页脚总计?