2012-05-29 4 views
9

Ist es möglich, die gesamte Reihe eines Wicket DataTable anklickbar zu machen? Wenn das so ist, wie ? Ich habe Beispiele dafür gesehen, wie man eine Zelle anklickbar macht, indem man die PropertyColumn-Klasse erweitert, was ziemlich einfach ist, aber keine einfache Lösung für die gesamte Zeile finden kann.ganze Reihe eines Wickets datierbar klickbar machen

Dank

+0

Ich denke nicht, dass es eine einfachere Lösung als das Verwenden Ihrer eigenen 'PropertyColumn'-Implementierung gibt. Sie können sich 'newRowItem' in der 'DataTable'-Klasse und die überschriebene Methode' newRowItem' im 'DataGridView' anschauen. – rotsch

Antwort

19

dies tun die Arbeit.

//override this method of the DataTable class 
@Override 
protected Item<T> newRowItem(String id, int index, final IModel<T> model) { 

    Item<T> rowItem = new Item<T>(id, index, model); 
    rowItem.add(new AjaxEventBehavior("onclick") { 

     private static final long serialVersionUID = 6720512493017210281L; 

     @Override 
     protected void onEvent(AjaxRequestTarget target) { 
     //callback or do some stuff 
     } 

    }); 
    return rowItem; 

} 
+0

Sehr hilfreiche Antwort. Darüber hinaus ermöglicht das Überschreiben dieser Methode das Festlegen der Markup-ID jeder Zeile, was in meinem Fall sehr hilfreich ist, da ich ein jQuery-Ereignis auslösen muss, um die neu eingefügte Zeile hervorzuheben, die eine Aktualisierung der DataTable ausgelöst hat. –

+0

Woher wissen Sie, welches Objekt in der onEvent-Methode angeklickt wurde? – DavidVdd

+0

durch das Modell, intern Wicket haben eine Spur der Beziehung zwischen den Zeilen und Objekten – osdamv