我需要根据Wicket PsDoctrans
中显示的DataView
的用户列表进行AJAXfully过滤。
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 :(得分:2)
我使用的结构与此相当,所以它应该有效。
你真的在回调中创建了一个新的“dp”对象吗?您应该只是更改数据提供者的状态 - 组件应该如何获得更改的提供者。
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form)
{
String value=(String)txtName.getModelObject();
--> dp.setName(value);
target.addComponent(wmc);
}