Подтвердить что ты не робот

Gwt celltable вызывает сортировку по столбцу

У меня есть таблица со списком Gwt. Нажатие на заголовки правильно сортирует столбцы. Но при загрузке страницы столбцы по умолчанию не сортируются. Я хочу сделать нужную большую колонку для сортировки при загрузке страницы.

4b9b3361

Ответ 1

Вы можете использовать getColumnSortList() и нажать столбец, который хотите отсортировать, таким образом:

dataGrid.getColumnSortList().push(columnToSortBy);

Таблица будет сортироваться по данному столбцу в порядке возрастания.

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

dataGrid.getColumnSortList().push(columnToSortBy);
dataGrid.getColumnSortList().push(columnToSortBy);

За сценой Столбец переместится во внутренний список в таблице с именем ColumnSortList в позицию 0. Тот же список обновляется при каждом щелчке заголовка столбца.

Убедитесь, что вы вызываете этот метод после инициализации столбца.

Ответ 2

Чтобы прояснить пару существующих ответов... Список сортировки cellTable (доступ к которому осуществляется функцией getColumnSortList()) определяет только состояние заголовка таблицы, но фактически не сортирует данные.

Как показано в @z00bs, может быть разумным сортировать данные извне, если это возможно. Если вы знаете, что данные будут предварительно отсортированы, вы должны использовать функции getColumnSortList().clear() и getColumnSortList().push() для связи с вашими пользователями, как данные сортируются.

Если, однако, вы хотите, чтобы CellTable фактически сортировал данные, вам нужно будет вызвать событие, чтобы заставить CellTable фактически сортировать клиентские данные составных данных. Для этого вы можете использовать метод состояния ColumnSortEvent.fire(), как таковой:

ColumnSortEvent.fire(myTable, myTable.getColumnSortList());

Это вызовет событие, которое обрабатывает сортировку данных на основе текущего состояния заголовка. Таким образом, вы можете сначала установить желаемое начальное состояние сортировки заголовка, а затем выполнить эту строку, чтобы фактически сделать упорядочение данных отражением текущего состояния сортировки, представленного в заголовке.

Ответ 3

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

/**
 * Displays the appropriate sorted icon in the header of the column for the given index.
 * 
 * @param columnIndex
 *            of the column to mark as sorted
 * @param ascending
 *            <code>true</code> for ascending icon, <code>false</code> for descending icon
 */
 public void setSortedColumn(int columnIndex, boolean ascending) {
      Column<T, ?> column = table.getColumn(columnIndex);
      if (column != null && column.isSortable()) {
           ColumnSortInfo info = table.getColumnSortList().push(column);
           if (info.isAscending() != ascending) {
                table.getColumnSortList().push(column);
           }
      }
 }

Если данные не могут быть отсортированы до извлечения, вы можете отсортировать список так же, как вы это делаете, когда пользователь нажимает на заголовок (onColumnSort(ColumnSortEvent event) с помощью Comparator) перед его отображением.