2010-12-30 14 views
0

Ich muss AJAXefully nach Benutzern filtern Liste von PsDoctrans, die in einem Wicket DataView gezeigt wird.Wie kann ich ein Wicket DataView mit AJAX aktualisieren?

final TextField txtName= new TextField("user"); 

final PSDocDP dp = new PSDocDP("username"); 
DataView<PsDoctrans> dataView = new DataView<PsDoctrans>("unproc", dp) 
{ 
    @Override 
    protected void populateItem(final Item<PsDoctrans> item) 
    ... 
}; 

PSDocDP ist:

public class PSDocDP extends SortableDataProvider<PsDoctrans> 
{...} 

final WebMarkupContainer wmc = new WebMarkupContainer("container"); 
wmc.add(dataView); 
wmc.setOutputMarkupId(true); 

AjaxButton butFind=new AjaxButton("find"){ 
    @Override 
    protected void onSubmit(AjaxRequestTarget target, Form<?> form) 
    {    
     String value=(String)txtName.getModelObject(); 
     dp = new PSDocDP(value); 

     target.addComponent(wmc); 
    } 
}; 

Nach dem Absenden, ändert sich nichts. Das Programm zeigt einige Daten, aber es filtert nicht. Wie kann ich Filterung passieren lassen?

+0

sollte nicht 'wmc'' final' sein? – Nishant

+0

ja seine endgültige, ich habe Code vereinfacht, um verständlicher zu sein – Daler

+0

Wie sieht die PSDocDP-Implementierung aus? Auch @Nishant: yers, sollte es, sollte der Compiler Fehler dabei sein. – bert

Antwort

2

Ich benutze Konstruktionen, die vergleichbar sind, also sollte es funktionieren.

Erstellen Sie wirklich ein neues "dp" -Objekt im Callback. Sie sollten einfach den Status des Datenanbieters ändern - wie sollte die Komponente den geänderten Provider erhalten?

@Override 
    protected void onSubmit(AjaxRequestTarget target, Form<?> form) 
    {    
     String value=(String)txtName.getModelObject(); 
-->  dp.setName(value); 
     target.addComponent(wmc); 
    } 
+0

Dank seiner Arbeit)). – Daler

Verwandte Themen