如何在Vaadin 8中设置网格以按自定义比较器排序?

时间:2018-03-11 07:37:37

标签: java vaadin vaadin8 vaadin-grid

例如,我的网格由- { name: 'Neha', age: 22 }组成,因此我有:

People

我的网格是这样的:

public class People { int id; String name; }

现在我知道我能做到:

grid.addColumn(People::getName).setId("Name");

问题是,如果我有两个同名的人,约翰说。在这种情况下,我想先按grid.sort("Name", SortDirection.ASCENDING); 排序,然后按name排序。 id不是网格中的列,它只是id类的属性。

虽然这个例子过于简单但我确实包含了额外的信息,所以我能够按实际人而不仅仅是姓名进行排序是很重要的。在我的例子中,网格是一个报告,而这个人的名字只是众多领域中的一个。

1 个答案:

答案 0 :(得分:2)

我最终做到这一点的方式,假设你有一个名为Cars的列表,其中一个是:

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());               
});