GWT Multi列使用AsyncDataProvider排序

时间:2013-07-16 10:28:46

标签: gwt dataprovider gwt-celltable

我有一个包含3列的表,当用户点击其中一个表时,应该对表进行排序,我使用的是AsyncDataProvider,第一列的排序工作正常,所以我应该对其他列执行相同的操作。这是代码:

AsyncDataProvider<PermisoUI> providerPerfiles = new AsyncDataProvider<PermisoUI>() {

    @Override
    protected void onRangeChanged(HasData<PermisoUI> display) {

        if(sortedPermiso) {
            sortedPermiso=false;
            class TipoCuotasComparator implements Comparator<Object> {
                public int compare(Object l1, Object l2) {
                    PermisoUI o1 = (PermisoUI) l1;
                    PermisoUI o2 = (PermisoUI) l2;
                    return o2.getId().compareTo(o1.getId());

                }
            }
            Collections.sort(listPermisos, new TipoCuotasComparator());
        }else {
            sortedPermiso = true;
            class TipoCuotasComparator implements Comparator<Object> {
                public int compare(Object l1, Object l2) {
                    PermisoUI o1 = (PermisoUI) l1;
                    PermisoUI o2 = (PermisoUI) l2;
                    return o1.getId().compareTo(o2.getId());
                }
            }
            Collections.sort(listPermisos, new TipoCuotasComparator());
        }

        int start = display.getVisibleRange().getStart();
        int end = start + display.getVisibleRange().getLength();
        end = end >= listPermisos.size() ? listPermisos.size() : end;
        List<PermisoUI> sub = listPermisos.subList(start, end);
        updateRowData(start, sub);

    }
};



providerPerfiles.addDataDisplay(CellTblPermisos);

//Sorting Column
AsyncHandler columnSortAplHandler = new AsyncHandler(CellTblPermisos);
CellTblPermisos.addColumnSortHandler(columnSortAplHandler);
CellTblPermisos.getColumnSortList().push(permisoColumn);


    providerPerfiles.addDataDisplay(CellTblPermisos);
providerPerfiles.updateRowCount(listPermisos.size(), true);
PPerfil.clear();
PPerfil.add(CellTblPermisos);

0 个答案:

没有答案