代码之家  ›  专栏  ›  技术社区  ›  Carnell

GWT 2.1单元格表列标题单击事件

  •  8
  • Carnell  · 技术社区  · 14 年前

    有没有办法将clickHandlers(或任何类型的处理程序)添加到 CellTable Column Header 允许这样做的类。我曾经 this post以了解如何使用CellTable。

    4 回复  |  直到 7 年前
        1
  •  3
  •   antony.trupe    11 年前

    在CellTable上还没有现成的支持sort的方法。然而,有一个手动的解决方法涉及到大量的代码苦工。参考课程 SortableHeader SortableColumn com.google.gwt.sample.expenses.gwt.client.ExpenseDetails . 在下一个版本中出现具体内容之前,您可以一直使用它。

    http://google-web-toolkit.googlecode.com/svn/trunk/bikeshed

        2
  •  8
  •   Italo Borssatto    14 年前

    单击事件的解决方法:

    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
  •  0
  •   Jason    14 年前

        4
  •  0
  •   Peter O. Manuel Pinto    13 年前
       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);