香草GWT中的Vaadin网格排序

香草GWT中的Vaadin网格排序,gwt,vaadin,vaadin7,Gwt,Vaadin,Vaadin7,我有一个关于网格小部件的问题。这个小部件也可以通过“GWTwidgets 7.4.3”下载在vanilla GWT中获得 但我的问题是,如何在GWT的这个小部件中启用排序 我从Vaadin提供的示例开始: 但是,当您对列执行“setSortable(true)”时,唯一发生的事情是,单击表标题时,会在表标题中绘制一个排序方向的箭头。表本身没有重新排序 另外,在带有列和方向的网格上执行排序方法也没有效果 在vaadin的书中,我提到了以下内容:“容器数据源必须支持排序。至少,它必须实现contai

我有一个关于网格小部件的问题。这个小部件也可以通过“GWTwidgets 7.4.3”下载在vanilla GWT中获得

但我的问题是,如何在GWT的这个小部件中启用排序

我从Vaadin提供的示例开始:

但是,当您对列执行“setSortable(true)”时,唯一发生的事情是,单击表标题时,会在表标题中绘制一个排序方向的箭头。表本身没有重新排序

另外,在带有列和方向的网格上执行排序方法也没有效果

在vaadin的书中,我提到了以下内容:“容器数据源必须支持排序。至少,它必须实现container.Sortable。”

所以我认为ListDataSource不适合排序。 但是我还能在GWT中使用什么来进行排序呢?在《瓦丁之书》中我看到 使用了BeanItemContainer,但“GWT Widgets 7.4.3”中没有提供,因为它似乎是一个服务器组件

所以归结到这个问题:如何在vanilla GWT项目中启用Vaadin网格上的排序

谢谢
Frank

我对Vaadin没有经验,但在普通GWT中,您会这样做(其中T是您的目标):

ListDataProvider dataProvider=新ListDataProvider();
List displayItems=dataProvider.getList();
ListHandler-sortHandler=新的ListHandler(displayItems);
然后,要使列可排序,需要告诉排序器如何对这些对象进行排序:

dateColumn.setSortable(true);
dateColumn.setDefaultSortAscending(false);
sortHandler.setComparator(dateColumn, new Comparator<Item>() {
    @Override
    public int compare(Item o1, Item o2) {
        if (o1.getDate() != null) {
            return (o2.getDate() != null) ?
                o1.getDate().compareTo(o2.getDate()) : 1;
        }
        return -1;
    }
});
dateColumn.setSortable(true);
dateColumn.setDefaultSortAscending(false);
setComparator(dateColumn,new Comparator(){
@凌驾
公共整数比较(项目o1、项目o2){
如果(o1.getDate()!=null){
返回(o2.getDate()!=null)?
o1.getDate().compareTo(o2.getDate()):1;
}
返回-1;
}
});
dateColumn.setSortable(true);
dateColumn.setDefaultSortAscending(false);
sortHandler.setComparator(dateColumn, new Comparator<Item>() {
    @Override
    public int compare(Item o1, Item o2) {
        if (o1.getDate() != null) {
            return (o2.getDate() != null) ?
                o1.getDate().compareTo(o2.getDate()) : 1;
        }
        return -1;
    }
});