当用户在Wicket中选择下拉选项时如何更新Panel?

时间:2010-10-13 20:31:19

标签: ajax wicket

我想知道在选择下拉列表值时如何更新面板,即在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);

1 个答案:

答案 0 :(得分:1)

你肯定是在正确的轨道上。

是实现这一目标的基本要素
target.addComponent(dealHistoryTablePanel);

AjaxFormComponentUpdatingBehavior

确切地说明了它的确切位置

您可能还想更改DealHistoryTablePanel中的模型,可能是将其中包含的列表替换为通过不同的服务调用获得的列表。要说明一点,我必须看到DealHistoryTablePanel的代码。

example显示在选择一个DropDownChoice之后更新{{1}}是有益的,当然它更新的组件是不同的。