2013-10-11 2 views
0

GWT CellTable сортировка столбцов по страницам, для каждой страницы мне нужно щелкнуть заголовок столбца для сортировки. Как отсортировать данные по одному клику. Это мой код,Gwt CellTable Сортировка только по страницам

dataProvider = new ListDataProvider<List<NamePair>>(); 
    dataProvider.addDataDisplay(dgrid); 
    List<List<NamePair>> list = dataProvider.getList(); 

    for (List<NamePair> contact : test) { 
     dataProvider.setList(test); 
     list.add(contact); 
    } 


    ListHandler<List<NamePair>> columnSortHandler = new ListHandler<List<NamePair>>(dataProvider.getList()); 
    System.out.println("Column count->"+dgrid.getColumnCount()); 

    for(int j=0 ; j<dgrid.getColumnCount();j++){    
     final int val = j; 
     columnSortHandler.setComparator(dgrid.getColumn(val), new Comparator<List<NamePair>>() { 

     public int compare(List<NamePair> o1, List<NamePair> o2) { 
      if (o1 == o2) { 
      return 0; 
     } 

     // Compare the column. 
     if (o1 != null) { 
      int index = val; 
      return (o2 != null) ? o1.get(index-2).compareTo(o2.get(index-2)) : 1; 
     } 
     return -1; 
     } 
    }); 
} 

dgrid.addColumnSortHandler(columnSortHandler); 

ответ

1

Я предлагаю вам переопределить ListHandler, переопределение и вызвать super.onColumnSort(ColumnSortEvent) для отладки метода onColumnSort(ColumnSortEvent), вы поймете, что происходит очень быстро.

Исходный код метода является довольно прямым

public void onColumnSort(ColumnSortEvent event) { 
    // Get the sorted column. 
    Column<?, ?> column = event.getColumn(); 
    if (column == null) { 
    return; 
    } 

    // Get the comparator. 
    final Comparator<T> comparator = comparators.get(column); 
    if (comparator == null) { 
    return; 
    } 

    // Sort using the comparator. 
    if (event.isSortAscending()) { 
    Collections.sort(list, comparator); 
    } else { 
    Collections.sort(list, new Comparator<T>() { 
     public int compare(T o1, T o2) { 
     return -comparator.compare(o1, o2); 
     } 
    }); 
    } 
} 
+0

Единственная причина, почему вы переопределить ListHandler, чтобы изолировать эту таблицу от других (и избежать того, отладчик запускается много раз), вы можете естественно положить ваши точка останова непосредственно в этом методе, если ваш проект прост –

Смежные вопросы