2010-12-30 5 views
0

Мне нужно AJAXfully фильтровать список пользователей PsDoctrans, который показан в Wicket DataView.Как обновить Wicket DataView с помощью AJAX?

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 является:

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); 
    } 
}; 

После подачи, ничего не меняется. Программа показывает некоторые данные, но не фильтрует. Как я могу сделать фильтрацию?

+0

не должен 'wmc' быть' final'? – Nishant

+0

Да, его окончательный вариант, я упростил код, чтобы быть более понятным – Daler

+0

Как выглядит реализация PSDocDP? Также @Nishant: yers, он должен, компилятор должен ошибаться. – bert

ответ

2

Я использую конструкции, сопоставимые с этим, поэтому он должен работать.

Действительно ли вы создаете новый «dp» объект в обратном вызове. Вы должны просто изменить состояние поставщика данных - как должен компонент когда-либо получить измененного поставщика.

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

благодаря его работе)). – Daler

Смежные вопросы