2010-07-16 8 views

Respuesta

3

No hay una manera de apoyar la ordenación aún en la Celda. Sin embargo, hay una solución manual que implica una gran cantidad de trabajo pesado de código. Consulte las clases SortableHeader y SortableColumn en el cobertizo de bicicletas en la muestra de gastos. Encontrará el uso en com.google.gwt.sample.expenses.gwt.client.ExpenseDetails. Puedes usar esto hasta que salga algo concreto en la próxima versión.

la salida del directorio: http://google-web-toolkit.googlecode.com/svn/trunk/bikeshed

+2

Parece que el enlace ya no es válida. Prueba este http://code.google.com/p/google-web-toolkit/source/browse/branches/2.1/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ – stuff22

+0

@ stuff22 respuesta editada. –

0

Con la versión final de GWT 2.1, ha habido ningún tipo de apoyo para las columnas que se pueden ordenar añade a la CellTable? ¿O todavía es una buena solución después de mirar el ejemplo de Bikeshed?

8

Solución para eventos de clic:

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); 
0
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); 
Cuestiones relacionadas