GWT Сортировка таблицы ячеек, вероятно, просто то, что я не видел - PullRequest
0 голосов
/ 11 июля 2011

Последние пару часов я боролся за сортировку GWT CellTable.Это действительно глупая проблема, потому что это было сделано здесь http://gwt.google.com/samples/Showcase/Showcase.html#!CwCellTable

Но я не понимаю, чего мне не хватает в примере ...

Вот мой код, который я использую для созданиястолбец:

    Column<RemoteCommand, String> nbProducts = new Column<RemoteCommand, String>(
                new TextCell()) {
              @Override
              public String getValue(RemoteCommand object) {
                return object.getNumberProduct();
              }
            };
            nbProducts.setSortable(true);
            sortHandler.setComparator(nbProducts, new Comparator<RemoteCommand>() {
              public int compare(RemoteCommand o1, RemoteCommand o2) {
cellTable.redraw();
                  return o1.getCommandSize().compareTo(o2.getCommandSize());
                   // System.out.println(Integer.parseInt(o1.getCommandSize() ) -  Integer.parseInt(o2.getCommandSize()));
                    //  return  Integer.parseInt(o1.getCommandSize() ) -  Integer.parseInt(o2.getCommandSize());
              }
            });

А вот и объявление самой таблицы:

// Add a selection model so we can select cells.
final SelectionModel<RemoteCommand> selectionModel = new MultiSelectionModel<RemoteCommand>(
            RemoteCommand.KEY_PROVIDER);
cellTable.setSelectionModel(selectionModel,
DefaultSelectionEventManager.<RemoteCommand> createCheckboxManager());


// Attach a column sort handler to the ListDataProvider to sort the list.
    ListHandler<RemoteCommand> sortHandler = new ListHandler<RemoteCommand>(values);
cellTable.addColumnSortHandler(sortHandler);

// Initialize the columns.
initTableColumns(selectionModel, sortHandler);

cellTable.setRowData(values);

help helpierier:)

1 Ответ

2 голосов
/ 23 ноября 2011

я думаю, вы уже нашли решение, но просто оставить его здесь:

Сначала создайте свой dataProvider с некоторым известным списком. Чем кормить sortHandler с тем же списком; и использовать список для обновления данных. Celltable должен быть установлен как dataDisplay для dataProvider:

List myDataList = new ArrayList();
ListDataProvider dataProvider = new ListDataProvider(KEY_PROVIDER);
dataProvider.setList(myDataList);
ListHandler sortHandler = new ListHandler(dataProvider.getList);
//tie provider and table
dataProvider.addDataDisplay(cellTable);

//when you need to update dataprovider
//first do some myDataList cleanup to remove old values
myListData.addAll(values);
//update data displays
dataProvider.refresh();

Учтите, что вы всегда должны использовать один и тот же объект List.

...