События щелчка заголовка столбца GWT 2.1 CellTable - PullRequest
8 голосов
/ 16 июля 2010

Есть ли способ добавить clickHandlers (или любой тип обработчика) к заголовкам столбцов в CellTable ? Я хочу добавить некоторые функции сортировки в мой CellTable и не вижу методов в классах Column или Header , которые позволили бы это. Я использовал этот пост, чтобы понять, как использовать CellTable.

Ответы [ 4 ]

8 голосов
/ 15 апреля 2011

Обходной путь для событий щелчка:

Header<String> columnHeader = new Header<String>(new ClickableTextCell()) {
    @Override
    public String getValue() {
        return columnName;
    }
};

columnHeader.setUpdater(new ValueUpdater<String>() {
    @Override
    public void update(String value) {
        Window.alert("Header clicked!");
    }
});

table.addColumn(column, columnHeader);
3 голосов
/ 16 июля 2010

В CellTable пока что нет готового способа поддержки сортировки. Однако есть обходной путь, включающий много рутинной работы с кодом. См. Классы SortableHeader и SortableColumn в сарае для велосипеда по образцу расходов. Вы найдете использование в com.google.gwt.sample.expenses.gwt.client.ExpenseDetails. Вы можете использовать это, пока в следующем выпуске не появится что-то конкретное.

проверить каталог: http://google -web-toolkit.googlecode.com / svn / trunk / bikeshed

0 голосов
/ 23 февраля 2012
   CellTable<Contact> table = new CellTable<Contact>();

    // Create name column.
    final TextColumn<Contact> nameColumn = new TextColumn<Contact>() {
      @Override
      public String getValue(Contact contact) {
        return contact.name;
      }
    };
    // Create a data provider.
    ListDataProvider<Contact> dataProvider = new ListDataProvider<Contact>();

    // Connect the table to the data provider.
    dataProvider.addDataDisplay(table);
    final List<Contact> list = dataProvider.getList();
    for (Contact contact : CONTACTS) {
      list.add(contact);
    }
    final ListHandler<Contact> columnSortHandler = new ListHandler<Contact>(
            list);
    Header<String> columnHeader = new Header<String>(new ClickableTextCell()) {
        @Override
        public String getValue() {
            return "Name";
        }
    };

    columnHeader.setUpdater(new ValueUpdater<String>() {
        @Override
        public void update(String value) {
            if (Window.confirm("Want to do?")){
                nameColumn.setSortable(true);
                columnSortHandler.setComparator(nameColumn,
                        new Comparator<Contact>() {
                          public int compare(Contact o1, Contact o2) {
                            if (o1 == o2) {
                              return 0;
                            }

                            // Compare the name columns.
                            if (o1 != null) {
                              return (o2 != null) ? o1.name.compareTo(o2.name) : 1;
                            }
                            return -1;
                          }
                        });
            } else nameColumn.setSortable(false);
        }
    });
    // Make the name column sortable.
    nameColumn.setSortable(false);

    // Create address column.
    TextColumn<Contact> addressColumn = new TextColumn<Contact>() {
      @Override
      public String getValue(Contact contact) {
        return contact.address;
      }
    };

    // Add the columns.
    table.addColumn(nameColumn, columnHeader);
    table.addColumn(addressColumn, "Address");




    // Add the data to the data provider, which automatically pushes it to the
    // widget.


    // Add a ColumnSortEvent.ListHandler to connect sorting to the
    // java.util.List.
    //------------------ Code to add --------------------------------//
    VerticalPanel vp = new VerticalPanel();




    table.addColumnSortHandler(columnSortHandler);
  //------------------ Code end --------------------------------//
    // We know that the data is sorted alphabetically by default.
    table.getColumnSortList().push(nameColumn);

    // Add it to the root panel.
    vp.add(table);
    RootPanel.get().add(vp);
0 голосов
/ 03 ноября 2010

В финальной версии GWT 2.1 была ли добавлена ​​поддержка сортируемых столбцов в CellTable?Или это все еще ваше собственное решение, если посмотреть на пример с велосипедом?

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