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