1

Вопрос по gwt, dynamic, celltable, dynamic-columns – Динамические столбцы таблицы ячеек gwt - сортировка

Вы можете представлять своистроки» какList в некоторых случаях вам нужно изменить параметризацию со строки на список в вашей таблице, столбце и поставщике данных; и, конечно, вы должны вызвать updateRowData сList>неList Вам также нужен один ...

<span>Посмотрите на ссылку ниже -<a href="http://stackoverflow.com/questions/13752633/programatic-celltable-sort-in-gwt-not-working/13767108#13767108">stackoverflow.com/questions/13752633/...</a></span>

от Adarsha

2 ответа

-1

Вот код сетки данных

indexedColumn.setSortable(true);
sortHandler.setComparator((Column) indexedColumn, (Comparator) indexedColumn.getComparator(true));

Вот актуальный класс

    public class IndexedColumn extends Column, String>
{
   private Comparator> forwardComparator;
   private Comparator> reverseComparator;
   private final int index;

   public IndexedColumn(int index)
   {
      super(new TextCell());
      this.index = index;
   }

   @Override
   public String getValue(List object)
   {
      return object.get(index);
   }

   public Comparator> getComparator(final boolean reverse)
   {
      if (!reverse && forwardComparator != null)
      {
         return forwardComparator;
      }
      if (reverse && reverseComparator != null)
      {
         return reverseComparator;
      }
      Comparator> comparator = new Comparator>()
      {
         public int compare(List o1, List o2)
         {
            if (o1 == null && o2 == null)
            {
               return 0;
            }
            else if (o1 == null)
            {
               return reverse ? 1 : -1;
            }
            else if (o2 == null)
            {
               return reverse ? -1 : 1;
            }

            // Compare the column value.
            String c1 = getValue(o1);
            String c2 = getValue(o2);
            if (c1 == null && c2 == null)
            {
               return 0;
            }
            else if (c1 == null)
            {
               return reverse ? 1 : -1;
            }
            else if (c2 == null)
            {
               return reverse ? -1 : 1;
            }
            int comparison = ((String) c1).compareTo(c2);
            return reverse ? -comparison : comparison;
         }
      };

      if (reverse)
      {
         reverseComparator = comparator;
      }
      else
      {
         forwardComparator = comparator;
      }
      return comparator;
   }

}
1

Вам нужно добавитьListHandler для каждого столбца вы хотите отсортировать отдельно. Вроде как это:

Вы'придется добавить метод полученияIndexedColumn для :index

class IndexedColumn extends Column, String> {

    private final int index;

    public IndexedColumn(int index) {
        super(new EditTextCell());
        this.index = index;
    }

    @Override
    public String getValue(List object) {
        return object.get(this.index);
    }

    public int getIndex(){
        return index;
    }

}

Затем вы'нужно будет добавитьListHandler к:CellTable

ListHandler> columnSortHandler = new ListHandler>(list);
    columnSortHandler.setComparator(columnName, new Comparator>() {

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

          // Compare the column.
          if (o1 != null) {
            int index = columnName.getIndex();
            return (o2 != null) ? o1.get(index).compareTo(o2.get(index)) : 1;
          }
          return -1;
        }
    });
table.addColumnSortHandler(columnSortHandler);

В приведенном выше примереlist этоList> объект.columnName этоColumn объект. Вы'Я должен сделать это для каждого столбца, который вы хотите отсортировать.

Дон»не забудьте также позвонить.setSortable(true) на каждом из столбцов, которые вы будете сортировать.

Хороший базовый пример сортировки столбцов можно найтиВот, Код выше основан на этом примере, но я использовал вашindex вIndexedColumn для того, чтобы получить надлежащееString для столбца, чтобы сделать сравнение.

Похожие вопросы