2010-12-30 34 views
0

Wicket DataViewで示されているPsDoctransのユーザーリストでAJAXfullyフィルタリングする必要があります。AJAXでWicket 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); 
    } 
}; 

提出した後、何も変わりません。プログラムにはいくつかのデータが表示されますが、フィルタリングされていません。どのようにフィルタリングを行うことができますか?

+0

'wmc'は' final'であってはなりませんか? – Nishant

+0

はい、その最終的な、私は理解しやすいコードを簡略化しました – Daler

+0

PSDocDPの実装はどのように見えますか?また、@ニシャン: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

関連する問題