【发布时间】:2014-11-27 09:17:42
【问题描述】:
我的页面上有 DropDownChoice 和 DataView。 DataView 应该根据 DropDownChoice 中选择的项目显示数据。我怎样才能做到这一点?
感谢 PropertyModel,我可以以非常简单的方式更改标签文本。 DataView 有什么办法吗?不是真的在寻找ajax刷新。提前非常感谢
【问题讨论】:
标签: wicket
我的页面上有 DropDownChoice 和 DataView。 DataView 应该根据 DropDownChoice 中选择的项目显示数据。我怎样才能做到这一点?
感谢 PropertyModel,我可以以非常简单的方式更改标签文本。 DataView 有什么办法吗?不是真的在寻找ajax刷新。提前非常感谢
【问题讨论】:
标签: wicket
您的DataView 使用DataProvider 来获取要显示的值。如果将DataView(或其父级)添加到AjaxRequestTarget,它将从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
}
});
更新
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
}
【讨论】:
setSelectedItem 不存在;你必须创建它。
size() 方法!