2010-10-13 2 views
0

Я хотел бы знать, как обновить панель, когда мы выберем выпадающие значения chioce, то есть в методе onUpdate().Как обновить панель, когда пользователь выбирает выпадающий список в Wicket?

Моя пользовательская панель имеет AjaxFallbackDefaultDataTable.

Ниже приведен код панели и выпадающего компонента. Когда пользователь выбирает дату, я хочу заменить всю свою панель. В настоящее время я добавил этот код 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 после того, как его указание поучительно, хотя, конечно, компонент, который он обновляет, отличается.

+0

Я нашел проблему, теперь она работает как ожидалось. Но я вижу еще одну проблему с сообщением навигационной строки и номерами, которые он показывает. Первый раз, когда я загружаю страницу, он показывает «показ от 1 до 10 из 50», теперь я нажал следующую стрелочную стрелку, и он показывает «показ от 11 до 20 из 50». После этого я изменил свой ниспадающий список, чтобы получить еще один список из базы данных. Я ожидаю, что моя таблица должна отображать «показ от 1 до 10 из 50», но вместо этого она показывает «показ от 11 до 20 из 50» (это последнее отображаемое сообщение перед сменой вниз). Как решить эту проблему? – jgg

+0

@goutham: Вероятно, некоторые данные подкачки в используемом вами механизме таблицы должны быть сброшены при изменении списков. Отправьте свой код DealHistoryTablePanel, и я, возможно, смогу помочь. –

+0

Я нашел решение для этого. То есть вызов table.setCurrentPage (0); после изменения значения сбрасывания. В любом случае, спасибо за это. – jgg

Смежные вопросы