我想知道在选择下拉列表值时如何更新面板,即在onUpdate()方法中。
我的自定义面板有AjaxFallbackDefaultDataTable。
下面是Panel和下拉组件代码。当用户选择日期时,我想替换整个Panel。目前我已经赞成了target.addComponent代码,但我想在这里实现。有什么建议吗?
List<DealHistory> dealHistoryList = ServicesCaller
.getAllDealHistoryRecords();
DealHistoryTablePanel dealHistoryTablePanel = new DealHistoryTablePanel(
"deal_history_table_panel", dealHistoryList);
dealHistoryTablePanel.setOutputMarkupId(true);
add(dealHistoryTablePanel);
IModel<List<? extends String>> dateChoices = new AbstractReadOnlyModel<List<? extends String>>() {
@Override
public List<String> getObject() {
List<String> list = new ArrayList<String>();
list.add("Last 3 months");
list.add("Last 6 months");
return list;
}
};
final DropDownChoice<String> datesDropDown = new DropDownChoice<String>(
"dates", new PropertyModel<String>(this, "selectedDate"),
dateChoices);
datesDropDown.add(new AjaxFormComponentUpdatingBehavior("onchange") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
//target.addComponent(dealHistoryTablePanel);
}
});
add(datesDropDown);
答案 0 :(得分:1)
你肯定是在正确的轨道上。
是实现这一目标的基本要素target.addComponent(dealHistoryTablePanel);
AjaxFormComponentUpdatingBehavior
。
您可能还想更改DealHistoryTablePanel
中的模型,可能是将其中包含的列表替换为通过不同的服务调用获得的列表。要说明一点,我必须看到DealHistoryTablePanel
的代码。
example显示在选择一个DropDownChoice
之后更新{{1}}是有益的,当然它更新的组件是不同的。