Так, например, моя сетка состоит из People, так что у меня есть:

public class People
{
    int id;
    String name;
}

Моя сетка такова, что у меня есть:

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

Теперь я знаю, что могу:

grid.sort("Name", SortDirection.ASCENDING);

Проблема в том, что, если у меня есть два человека с одинаковым именем, скажем Джон. В этом случае я хочу сначала отсортировать по name, а затем по id. Идентификатор не является столбцом в сетке, это просто свойство класса People.

Хотя этот пример слишком упрощен, я все же включаю дополнительную информацию, поэтому важно, чтобы я мог сортировать по фактическому человеку, а не только по имени. В моем случае сетка - это отчет, а имя человека - лишь одно из многих полей.

2
Stephane Grenier 11 Мар 2018 в 10:37

1 ответ

Лучший ответ

В итоге я сделал это, если предположить, что у вас есть список машин с людьми в одной из колонок:

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());               
});
2
Stephane Grenier 18 Мар 2018 в 06:28