Как я могу обновить Wicket DataView с AJAX? - PullRequest
0 голосов
/ 30 декабря 2010

Мне нужно AJAXfully фильтровать по списку пользователей PsDoctrans, который отображается в калитке DataView.

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

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

1 Ответ

2 голосов
/ 30 декабря 2010

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

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

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