On my Wicket page, I have a form with a couple of TextFields and a paginated
List of Checkboxes implemented with Dataview and and a sortable data provider.
The ajax pagination of the dataview works fine.
The problem is that when I select a few items on Page 1 and then go to Page 2
and then return to Page 1 using the AjaxPagingNavigator, the selection is lost
: the items that were checked on Page 1 initially do no have the "check mark"
anymore.
What should I do so that the items that were selected on a page of Dataview do
not get lost when the AjaxPagnigaion is used to traverse the pages of the
Dataview ?
public final class AjaxFormWithPaginatedCheckBoxPage extends BasePage {
static Logger logger =
Logger.getLogger(AjaxFormWithPaginatedCheckBoxPage.class);
private Person person = new Person();
int counter = 0;
WebMarkupContainer webMC;
static List<Person> pList=Person.getPersons(100);
int maxListCount=5;
DataView dv;
CheckGroup group;
public AjaxFormWithPaginatedCheckBoxPage() {
super();
final Form form = new Form("form", new CompoundPropertyModel(person)) {
protected void onSubmit() {
logger.info("form recived");
logger.info(" person name " + person.getName());
setResponsePage(new AjaxTogglePanelTestPage());
}
};
final TextField name = new TextField("name");
final TextField age = new TextField("age");
form.add(name);
form.add(age);
group=new CheckGroup("group", new ArrayList());
form.add(group);
webMC= new WebMarkupContainer("webMC");
webMC.setOutputMarkupId(true);
SortablePersonDataProvider personDataProvider=new
SortablePersonDataProvider(pList);
dv = new DataView<Person>("persons", personDataProvider) {
@Override
protected void populateItem(Item<Person> item) {
item.add(new Check("check", item.getModel()));
item.add(new Label("id", new PropertyModel(item.getModel(),
"id")));
item.add(new Label("name", new PropertyModel(item.getModel(),
"name")));
item.add(new Label("age", new PropertyModel(item.getModel(),
"age")));
}
};
dv.setItemsPerPage(maxListCount);
webMC.add(new AjaxFallbackOrderByBorder("orderByID", "id",
personDataProvider)
{
@Override
protected void onSortChanged()
{
dv.setCurrentPage(0);
}
@Override
protected void onAjaxClick(AjaxRequestTarget target) {
target.addComponent(webMC);
}
});
webMC.add(new AjaxFallbackOrderByBorder("orderByName", "name",
personDataProvider)
{
@Override
protected void onSortChanged()
{
dv.setCurrentPage(0);
}
@Override
protected void onAjaxClick(AjaxRequestTarget target) {
target.addComponent(webMC);
}
});
webMC.add(new AjaxFallbackOrderByBorder("orderByAge", "age",
personDataProvider)
{
@Override
protected void onSortChanged()
{
dv.setCurrentPage(0);
}
@Override
protected void onAjaxClick(AjaxRequestTarget target) {
target.addComponent(webMC);
}
});
webMC.add(dv);
webMC.add(new AjaxPagingNavigator("navigator",dv));
group.add(webMC);
AjaxButton ab = new AjaxButton("ajax-button", new
PropertyModel<String>(this,
"counter"), form) {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
counter++;
logger.info("ajx form recived");
logger.info("ajx person name " + person.getName());
target.addComponent(this);
}
};
form.add(ab);
form.setDefaultButton(ab);
add(form);
}
}
Thanks
Badmash
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]