如何在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));