首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Grid Vaadin8中使用setSortOrderProvider?

如何在Grid Vaadin8中使用setSortOrderProvider?
EN

Stack Overflow用户
提问于 2018-01-09 04:24:29
回答 2查看 1.4K关注 0票数 5

我正在尝试使用网格组件。当我需要定义列的顺序时,我正在使用这个项目:https://github.com/vaadin/tutorial/tree/v8-step4

我添加了这段代码:

代码语言:javascript
复制
Column name = grid.addColumn(customer -> customer.getFirstName() + " " + customer.getLastName())
    .setCaption("Name")
    .setSortOrderProvider(direction -> Stream.of(
            new QuerySortOrder("lastName", direction)
            ));

grid.setSortOrder(GridSortOrder.asc(name));

但是我没有得到预期的结果,我得到的是firstName的排序,然后是lastName的排序,但我需要lastName排序的结果。

你也遇到过同样的问题吗?你是怎么解决这个问题的?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-12 00:04:32

我深入研究了代码,发现您需要调用setComparator而不是setSortOrderProvider。前者用于内存中的数据提供程序。不幸的是,它有点令人困惑,而且没有很好的文档记录。

票数 4
EN

Stack Overflow用户

发布于 2018-01-12 23:24:51

我使用了setComparator的这个实现,它正在工作。:)

代码语言:javascript
复制
Column name = grid.addColumn(customer -> customer.getFirstName() + " " + customer.getLastName())
        .setCaption("Name")
        .setComparator(new SerializableComparator<Customer>() {

            @Override
            public int compare(Customer arg0, Customer arg1) {
                return arg0.getLastName().compareTo(arg1.getLastName());
            }
        });

使用Lambda:

代码语言:javascript
复制
.setComparator((customer0, customer1) -> {
            return customer0.getLastName().compareTo(customer1.getLastName());
        });

另一种选择是:

代码语言:javascript
复制
Column name = grid.addColumn(customer -> customer.getFirstName() + " " + customer.getLastName())
        .setCaption("Name")
        .setComparator(grid.getColumn("lastName").getComparator(SortDirection.ASCENDING));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48157548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档