如何在Grid Vaadin 8中使用setSortOrderProvider?

如何在Grid Vaadin 8中使用setSortOrderProvider?,grid,vaadin,vaadin8,Grid,Vaadin,Vaadin8,我正在尝试使用网格组件。我需要定义列的顺序,我正在使用此项目: 我添加了以下代码: Column name = grid.addColumn(customer -> customer.getFirstName() + " " + customer.getLastName()) .setCaption("Name") .setSortOrderProvider(direction -> Stream.of( new QuerySortOrder

我正在尝试使用网格组件。我需要定义列的顺序,我正在使用此项目:

我添加了以下代码:

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(grid.getColumn("lastName").getComparator(SortDirection.ASCENDING));

您的
网格
正在使用内存中的数据提供程序,如
列表数据提供程序
?您好,Steffen,谢谢您的询问。我正在使用setItems:List customers=service.findAll(filterText.getValue());网格设置项(客户);好的,您是否设置了默认的排序列?我的意思是,如果您不想单击列标题进行排序,您需要在初始化时调用
网格上的
setSortOrder
。我尝试添加一个,但无论是否使用setSortOrder,我都会得到相同的结果:Grid.setSortOrder(GridSortOrder.asc(name));您可以提供所有的网格代码,包括CustomerBean代码吗?
.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));