Frage an wicket, datatable, clickable – Die gesamte Reihe eines Wickets kann angeklickt werden

9

Ist es möglich, die gesamte Zeile einer Wicket DataTable anklickbar zu machen? Wenn das so ist, wie ? Ich habe Beispiele dafür gesehen, wie eine Zelle durch Erweitern der PropertyColumn-Klasse anklickbar gemacht werden kann. Dies ist recht einfach, kann aber keine einfache Lösung für die gesamte Zeile finden.

Ich glaube nicht, dass es eine einfachere Lösung gibt als Ihre eigenePropertyColumn Implementierung. Sie könnten einen Blick darauf werfennewRowItem in demDataTable Klasse und die überschriebene MethodenewRowItem in demDataGridView. rotsch

Deine Antwort

1   die antwort
19

das macht 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;

}
Woher wissen Sie, auf welches Objekt in der onEvent-Methode geklickt wurde? DavidVdd
Kann ich ein Dokument mit einem Klick auf eine Zeile zurückgeben? Ich erhalte Ajax-Fehler, wenn ich versuche, einen ResourceStreamRequestHandler zurückzugeben (der eine PDF-Datei enthält, die ich beim Klicken auf die Zeile im laufenden Betrieb generiere). Johncl
Nach dem Modell hat Wicket intern einen Überblick über die Beziehung zwischen den Zeilen und Objekten osdamv
Sehr hilfreiche Antwort. Durch Überschreiben dieser Methode kann ich außerdem die Markup-ID jeder Zeile festlegen. Dies ist in meinem Fall sehr hilfreich, da ich ein jQuery-Ereignis auslösen muss, um die neu eingefügte Zeile hervorzuheben, die eine Aktualisierung der DataTable ausgelöst hat. Anthony Richir
@ Johncl Ich denke schon, ich würde versuchen, meine eigenen Ajaxbehaivor zu machen, aber über ein Jahr programmiere ich nicht in Wicket :( osdamv

Verwandte Fragen