如何在 Grid Vaadin 8 中使用 setSortOrderProvider?
How to use setSortOrderProvider in Grid Vaadin 8?
我正在尝试使用网格组件。我需要定义列的顺序,我正在使用这个项目:
https://github.com/vaadin/tutorial/tree/v8-step4
然后我添加这段代码:
Column name = grid.addColumn(customer -> customer.getFirstName() + " " + customer.getLastName())
.setCaption("Name")
.setSortOrderProvider(direction -> Stream.of(
new QuerySortOrder("lastName", direction)
));
grid.setSortOrder(GridSortOrder.asc(name));
但我没有得到预期的结果,我按名字排序,然后按姓氏排序,但我需要按姓氏排序的结果。
你遇到过同样的问题吗?你是怎么解决的?
谢谢。
我深入研究了代码,发现您需要调用 setComparator
而不是 setSortOrderProvider
。前者适用于内存数据提供者。不幸的是,它有点令人困惑,而且没有很好的记录。
我使用了 setComparator 的这个实现,它工作正常。 :)
Column name = grid.addColumn(customer -> customer.getFirstName() + " " + customer.getLastName())
.setCaption("Name")
.setComparator(new SerializableComparator<Customer>() {
@Override
public int compare(Customer arg0, Customer arg1) {
return arg0.getLastName().compareTo(arg1.getLastName());
}
});
使用 Lambda:
.setComparator((customer0, customer1) -> {
return customer0.getLastName().compareTo(customer1.getLastName());
});
和另一个选项:
Column name = grid.addColumn(customer -> customer.getFirstName() + " " + customer.getLastName())
.setCaption("Name")
.setComparator(grid.getColumn("lastName").getComparator(SortDirection.ASCENDING));
我正在尝试使用网格组件。我需要定义列的顺序,我正在使用这个项目: https://github.com/vaadin/tutorial/tree/v8-step4
然后我添加这段代码:
Column name = grid.addColumn(customer -> customer.getFirstName() + " " + customer.getLastName())
.setCaption("Name")
.setSortOrderProvider(direction -> Stream.of(
new QuerySortOrder("lastName", direction)
));
grid.setSortOrder(GridSortOrder.asc(name));
但我没有得到预期的结果,我按名字排序,然后按姓氏排序,但我需要按姓氏排序的结果。
你遇到过同样的问题吗?你是怎么解决的?
谢谢。
我深入研究了代码,发现您需要调用 setComparator
而不是 setSortOrderProvider
。前者适用于内存数据提供者。不幸的是,它有点令人困惑,而且没有很好的记录。
我使用了 setComparator 的这个实现,它工作正常。 :)
Column name = grid.addColumn(customer -> customer.getFirstName() + " " + customer.getLastName())
.setCaption("Name")
.setComparator(new SerializableComparator<Customer>() {
@Override
public int compare(Customer arg0, Customer arg1) {
return arg0.getLastName().compareTo(arg1.getLastName());
}
});
使用 Lambda:
.setComparator((customer0, customer1) -> {
return customer0.getLastName().compareTo(customer1.getLastName());
});
和另一个选项:
Column name = grid.addColumn(customer -> customer.getFirstName() + " " + customer.getLastName())
.setCaption("Name")
.setComparator(grid.getColumn("lastName").getComparator(SortDirection.ASCENDING));