테이블보기에서 레코드 수를 표시하는 목록보기를 만들었으며 목록보기 안에는 텍스트 필드와 드롭 다운 선택 필드가 있습니다.Wicket ListView - 텍스트 필드를 통해 dropdownchoice 새로 고침
내가 달성해야하는 것은 텍스트 필드를 onchange하여 특정 레코드에 대한 드롭 다운 선택 값을 기본값으로 설정하는 것입니다. 그러나 다음 코드를 사용할 때 업데이트 될 단 하나의 레코드가 작동 할 때 작동하지만 여러 레코드가있는 경우 실패합니다. 도움이 필요하다! 미리 감사드립니다.
샘플 코드 :
new ListView("list", getItemList()) {
protected void populateItem(ListItem item) {
final Sl qv = (Sl) item.getModelObject();
item.setModel(new CompoundPropertyModel(qv));
ratio = new TextField("ratio");
item.add(ratio);
ratio.setOutputMarkupId(true);
ratio.add(new AjaxFormComponentUpdatingBehavior("onkeyup") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
getProperties().put("rating" + Sl.getid(), "Strong");
target.addComponent(rating);
}
});
rating = new DropDownChoice("rating", getDdlmodels().get(item.getIndex()), ratingList);
item.add(rating);
rating.setOutputMarkupId(true);
}
}
참고 : 키와 valueMap과 속성 (DdlModels)와 PropertyModel 얻을하는 데 사용하고 dropdownchoice의 값을 설정하고있다. 텍스트 필드의 onchange시 propertyModel이 업데이트되었지만 Ajax 새로 고침을 추가 했더라도 dropdownchoice가 새로 고침/다시 렌더링되지 않았습니다.
목록보기 항목에 구성 요소를 추가해야합니다. 따라서 item.add()를 add (..)하는 대신에. (varaible = new ..)를 제거하십시오. 읽기가 힘듭니다. – bert
답장을 보내 주셔서 감사합니다. 사실 item.add()는 이미 간단한 버전의 코드를 작성하는 동안 그 내용을 놓쳤습니다. 지적 해 주셔서 고마워요. 실제로 위의 코드는 단지 하나의 레코드를 얻었지만 여러 레코드가 실패했을 때 제대로 작동합니다. target.add (등급)와 관련이 있다고 생각합니다.이 방법으로 새로 고칠 수는 없지만 다른 방법은 찾을 수 없습니다. 방법. – sschong