Сортировка по различным атрибутам в виджете GWT - PullRequest
1 голос
/ 16 мая 2011

У меня есть таблица ячеек со следующими атрибутами (функция, Total, Pass, Fail), и у меня есть несколько строк.Я хочу добавить поддержку сортировки по признаку (тексту) по алфавиту или сортировке по ошибке (целое число).Обратите внимание, что я не хочу сортировать по функциям и таблицам!Я хочу отсортировать их по отдельности.Как мне этого добиться?

Можно добавить обработчики сортировки столбцов, используя метод addColumnSortHandler, но этот обработчик срабатывает, когда я выбираю любой столбец, который можно сортировать.Если я добавлю более одного обработчика сортировки столбцов, все компараторы будут запущены.Как сделать так, чтобы в столбце, который я щелкаю, сортировались только данные?т. е. если я щелкну заголовок элемента, он должен быть отсортирован по алфавиту.Если я нажму Fail, то сортировка будет выполнена по ошибке ... и т.д ..

Любая помощь будет принята с благодарностью.Спасибо

Вот фрагмент кода

        final ListHandler<FeatureSummaryObject> failedColSortHandler = new ListHandler<FeatureSummaryObject>(dataProvider.getList());
        failedColSortHandler.setComparator(failedCol, new Comparator<FeatureSummaryObject>() {

            @Override
            public int compare(FeatureSummaryObject o1, FeatureSummaryObject o2) {
                return o1.getFailed() - o2.getFailed();
            }
        });
        table.addColumnSortHandler(failedColSortHandler);
        failedCol.setSortable(true);


        ListHandler<FeatureSummaryObject> featureColSortHandler = new ListHandler<FeatureSummaryObject>(dataProvider.getList());
        featureColSortHandler.setComparator(featureCol, new Comparator<FeatureSummaryObject>() {

            @Override
            public int compare(FeatureSummaryObject o1, FeatureSummaryObject o2) {
                return o1.feature.compareTo(o2.feature);
            }
        });
        table.addColumnSortHandler(featureColSortHandler);

        featureCol.setSortable(true);

С уважением,

1 Ответ

4 голосов
/ 18 мая 2011

Я использую CellTable для отображения списка файлов (Имя файла, Размер, Тип пантомимы). Я могу сортировать по столбцам индивидуально, нажимая на заголовок, используя следующий код:

Сначала я отмечаю столбцы как сортируемые:

   urlColumn.setSortable(true);
   mimeColumn.setSortable(true);
   sizeColumn.setSortable(true);

Затем я добавляю создать ColumnSortHandler для каждого столбца и добавляю в таблицу вот так:

   // Add sorting for the Name column
   ListHandler<Asset> urlSortHandler = new ListHandler<Asset>(dataProvider.getList());
   urlSortHandler.setComparator(urlColumn, new Comparator<Asset>() {
     public int compare(Asset o1, Asset o2) {
        ....
     }
   });
   table.addColumnSortHandler(urlSortHandler);

   // Add sorting for the Size column
   ListHandler<Asset> sizeSortHandler = new ListHandler<Asset>(dataProvider.getList());
   sizeSortHandler.setComparator(sizeColumn, new Comparator<Asset>() {
     public int compare(Asset o1, Asset o2) {
        ....
     }
   });
   table.addColumnSortHandler(sizeSortHandler);

   // Add sorting for the Type column
   ListHandler<Asset> mimeSortHandler = new ListHandler<Asset>(dataProvider.getList());
   mimeSortHandler.setComparator(mimeColumn, new Comparator<Asset>() {
      public int compare(Asset o1, Asset o2) {
         ...
      }
   });
   table.addColumnSortHandler(mimeSortHandler);

Я добавил несколько журналов и убедился, что запускаются соответствующие обработчики сортировки (то есть, если я нажимаю на имя файла, вызывается только обработчик сортировки имени файла).

Надеюсь, этот пример кода поможет. Если нет, предоставьте пример кода, который может помочь нам лучше диагностировать проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...