2011-03-21 9 views
6

hola a todos necesito un ejemplo sencillo que me muestran cómo agregar la columna de ClickableTextCells a CellTablecómo añadir la columna de ClickableTextCells a CellTable

gracias.

+0

Hola Ahmed. Vuelva las preguntas a su forma original y publique la solución como una respuesta. Lea http://stackoverflow.com/faq si todavía tiene preguntas sobre stackoverflow. Gracias. –

+0

hecho ... gracias por su comentario –

+0

De nada. Cuando puedas, deberías 'aceptar' tu propia respuesta también. –

Respuesta

3

Ésta es la solución si es necesario agregar clickableTextCell a CellTable

// ClickableTextCell 

ClickableTextCell anchorcolumn = new ClickableTextCell(); 
table.addColumn(addColumn(anchorcolumn, new GetValue<String>() { 
     public String getValue(Contact contact) { 
      return "Click " + contact.anchor; 
     } 
    }, new FieldUpdater<Contact, String>() { 
     public void update(int index, Contact object, String value) { 
      Window.alert("You clicked " + object.name); 
     } 
    }), "Anchor"); 



private <C> Column<Contact, C> addColumn(Cell<C> cell,final GetValue<C> getter, 
FieldUpdater<Contact, C> fieldUpdater) { 
     Column<Contact, C> column = new Column<Contact, C>(cell) { 

     @Override 
     public C getValue(Contact object) { 
      return getter.getValue(object); 
     } 
    }; 
    column.setFieldUpdater(fieldUpdater); 

    return column; 
} 

private static interface GetValue<C> { 
    C getValue(Contact contact); 
} 


// A simple data type that represents a contact. 
    private static class Contact { 
     private final String address; 
     private final String name; 
     private final String anchor; 

     public Contact(String name, String address, String anchor) { 
      this.name = name; 
      this.address = address; 
      this.anchor = anchor; 
     } 
    } 
+0

Esta es una forma realmente intrincada de crear una ClickableTextCell. Me gusta la respuesta de pigpig mucho mejor. –

2

Crear una Column reemplazando el método onBrowserEvent.

De esta manera:

new Column<T, String>(new TextCell()) { 
    @Override 
    public String getValue(T object) { 
     return object.getProperty(); 
    } 

    @Override 
    public void onBrowserEvent(Context context, Element elem, T object, NativeEvent event) { 
     // TODO You can check which event you want to catch 
     Window.open("http://www.stackoverflow.com", "StackOverFlow", ""); 
    } 
}; 
9
Column<YerValueObject, String> newCol = new Column<YerValueObject, String>(new ClickableTextCell()) { 
    @Override 
    public String getValue(YearValueObject obj) { 
     return obj.someMethod(); 
    } 

}; 

newCol.setFieldUpdater(new FieldUpdater<YerValueObject, String>() { 
    @Override 
    public void update(int index, YerValueObject obj, String value) { 
     //do whatever you need to here... 
    } 
}); 

table.addColumn(newCol, "ClickColumn"); 
Cuestiones relacionadas