2014-11-27 1 views
1

내 페이지에 DropDownChoice 및 DataView가 있습니다. DataView는 DropDownChoice에서 선택된 항목에 따라 데이터를 표시해야합니다. 이것을 어떻게 할 수 있습니까?Wicket DataView의 데이터 새로 고침

PropertyModel 덕분에 아주 간단한 방법으로 레이블 텍스트를 변경할 수 있습니다. DataView에 대해 som 방식이 있습니까? 아약스 새로 고침을 실제로 찾지 않습니다. 미리 감사드립니다.

답변

3

DataViewDataProvider을 사용하여 값을 표시합니다. AjaxRequestTargetDataView (또는 해당 상위)을 추가하면 DataProvider에서 값을 다시 가져옵니다. DropDownChoice에서 선택을 변경하면 DataProvider이 업데이트됩니다.

예.

dropDown.add(new AjaxFormComponentUpdatingBehavior("onchange") { 

    @Override 
    protected void onUpdate(AjaxRequestTarget target) { 
     dataProvider.setSelectedItem(dropDownModel.getObject()); 
     target.add(dataView); //o dataView's parent 
    } 
}); 

UPDATE

MyDataProvider { 

private SomeObject selectedItem; 

@Override 
public Iterator<? extends SomeOtherObject> iterator(long first, long count) { 
    return this.service.findAllForItem(this.selectedItem).iterator(); 
} 

//+size + setter for selectedItem 

} 
+0

당신은 DataProvider를를 업데이트 좀 도와 주 시겠어요? 나는 그것을위한 어떤 방법도 보지 못한다. DataView 객체에 getDataProvider가 있고 setter가 없습니다. – estelmo

+0

** ** ** DataProvider에서 메소드를 만들어야합니다. 예제에서'setSelectedItem'은 존재하지 않습니다; 당신은 그것을 만들어야 만합니다. –

+0

'size()'메소드를 잊지 마라! – RobAu