You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by bad boy <ba...@yahoo.com> on 2011/08/10 03:38:28 UTC
how to implement a Form with Ajax Paginated List of Checkboxes?
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: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: how to implement a Form with Ajax Paginated List of Checkboxes?
Posted by heapifyman <he...@gmail.com>.
Hi,
I have the same problem and I would appreciate if you could post a code
example of how you solved your problem? Specifically what you put into
the AjaxCheckBox' onUpdate() method?
Thanks
2011/8/11 bad boy <ba...@yahoo.com>
> AjaxFormChoiceComponentUpdatingBehavior did not work. For some reason ir
> would only ccept the first checkbox. when I checked say 5 checkboxe, it
> would only remember the first fone
>
>
> But changing Check to AjaxCheckBox worked perfectly.
>
>
> Thanks
>
>
>
>
>
> ----- Original Message -----
> From: Martin Grigorov <mg...@apache.org>
> To: users@wicket.apache.org; bad boy <ba...@yahoo.com>
> Cc:
> Sent: Wednesday, August 10, 2011 7:35 AM
> Subject: Re: how to implement a Form with Ajax Paginated List of
> Checkboxes?
>
> Add AjaxFormChoiceComponentUpdatingBehavior to the CheckGroup
>
> On Wed, Aug 10, 2011 at 4:38 AM, bad boy <ba...@yahoo.com> wrote:
> > 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: users-unsubscribe@wicket.apache.org
> > For additional commands, e-mail: users-help@wicket.apache.org
> >
> >
>
>
>
> --
> Martin Grigorov
> jWeekend
> Training, Consulting, Development
> http://jWeekend.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>
Re: how to implement a Form with Ajax Paginated List of Checkboxes?
Posted by bad boy <ba...@yahoo.com>.
AjaxFormChoiceComponentUpdatingBehavior did not work. For some reason ir would only ccept the first checkbox. when I checked say 5 checkboxe, it would only remember the first fone
But changing Check to AjaxCheckBox worked perfectly.
Thanks
----- Original Message -----
From: Martin Grigorov <mg...@apache.org>
To: users@wicket.apache.org; bad boy <ba...@yahoo.com>
Cc:
Sent: Wednesday, August 10, 2011 7:35 AM
Subject: Re: how to implement a Form with Ajax Paginated List of Checkboxes?
Add AjaxFormChoiceComponentUpdatingBehavior to the CheckGroup
On Wed, Aug 10, 2011 at 4:38 AM, bad boy <ba...@yahoo.com> wrote:
> 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: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>
--
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: how to implement a Form with Ajax Paginated List of Checkboxes?
Posted by Martin Grigorov <mg...@apache.org>.
Add AjaxFormChoiceComponentUpdatingBehavior to the CheckGroup
On Wed, Aug 10, 2011 at 4:38 AM, bad boy <ba...@yahoo.com> wrote:
> 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: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>
--
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org