如何在 Vaadin 8 中设置网格以按自定义比较器排序?
How do you setup a Grid in Vaadin 8 to sort by a custom comparator?
例如,我的网格由 People
组成,因此我有:
public class People
{
int id;
String name;
}
我的网格是这样的:
grid.addColumn(People::getName).setId("Name");
现在我知道我可以做到:
grid.sort("Name", SortDirection.ASCENDING);
问题是如果我有两个同名的人怎么办,比如约翰。在这种情况下,我想先按 name
排序,然后再按 id
排序。 id 不是网格中的列,它只是 People
class 的 属性。
虽然这个例子过于简单,但我确实包含了额外的信息,所以重要的是我能够按真实的人而不是名字来排序。在我的例子中,网格是一份报告,人名只是众多字段之一。
我最终这样做的方式是:
Grid<Car> grid = new Grid<Car>();
grid.addColumn(Car::getPerson).setComparator((car1, car2) ->
{
// ignoring any null checks for getPerson() as they can be null.
return car1.getPerson().compareTo(car2.getPerson());
});
例如,我的网格由 People
组成,因此我有:
public class People
{
int id;
String name;
}
我的网格是这样的:
grid.addColumn(People::getName).setId("Name");
现在我知道我可以做到:
grid.sort("Name", SortDirection.ASCENDING);
问题是如果我有两个同名的人怎么办,比如约翰。在这种情况下,我想先按 name
排序,然后再按 id
排序。 id 不是网格中的列,它只是 People
class 的 属性。
虽然这个例子过于简单,但我确实包含了额外的信息,所以重要的是我能够按真实的人而不是名字来排序。在我的例子中,网格是一份报告,人名只是众多字段之一。
我最终这样做的方式是:
Grid<Car> grid = new Grid<Car>();
grid.addColumn(Car::getPerson).setComparator((car1, car2) ->
{
// ignoring any null checks for getPerson() as they can be null.
return car1.getPerson().compareTo(car2.getPerson());
});