Table of contents
Initial situation: Paging done without Ajax
Say you have a page with a PagingNavigator and a DataView.
DataView dataView = new MyDataView("dataView"); add(dataView); PagingNavigator pager = new PagingNavigator("pager", dataView); add(pager);
Adding Ajax
Now you want to do the paging be done via Ajax. But simply replacing the PagingNavigator with a AjaxPagingNavigator won't do it - the Page will be updated, but the DataView won't. To accomplish this, you need to do the following:
- surround the PagingNavigation and the DataView with a WebMarkupContainer
- tell the AjaxPagingNavigator to update the WebMarkupContainer
- update your HTML to match the new component hierarchy
final WebMarkupContainer dataContainer = new WebMarkupContainer("dataContainer"); dataContainer.setOutputMarkupId(true); add(dataContainer); DataView dataView = new MyDataView("dataView"); dataContainer.add(dataView); AjaxPagingNavigator pager = new AjaxPagingNavigator("pager", dataView) { @Override protected void onAjaxEvent(AjaxRequestTarget target) { target.addComponent(dataContainer); } }; dataContainer.add(pager);
From a posting of Igor to the wicket-user list