Hi,

it worked fine for me, I attach my own code so you can compare. Btw, why
don't you just use a listview with a model that filters out the selected
items? Imo it's simpler and more elegant. And another remark: you can bind
your checkbox to a boolean (see my example).

Regards,
Carlos

On 8/26/07, pokkie <[EMAIL PROTECTED]> wrote:
>
>
> I have a RepeatingView that I generate, each row is represented as a
> WebMarkupContainer.
> At the end of each row I add a checkbox. When the "Delete Selected" button
> is called,
> I wish to remove the selected row from the RepeatingView and update the
> page
> to reflect
> this status.
>
> ----------------------
> WebMarkupContainer mainExerciseItem = new
> WebMarkupContainer(newChildId());
>
> add(mainExerciseItem);
>
> mainExerciseItem.add(new CheckBox("exerciseSelected", new
> PropertyModel(mainMemberProgramExerciseHolder,
> "memberProgramExerciseSelected")));
> ----------------------
>
> Currently, I iterate over the items in the RepeatingView, check if they
> are
> selected, and
> subsequently call remove(WebMarkupContainer).
>
> ----------------------
>                 while (exerciseTable.iterator().hasNext()) {
>                     WebMarkupContainer container = (WebMarkupContainer)
> exerciseTable.iterator().next();
>                     if
> (container.get("exerciseSelected").getModelObjectAsString().equals(
> StaticData.TRUE))
> {
>                         exerciseTable.remove(container);
>                     }
> ----------------------
>
> The problem is that it seems that after calling the remove() method, it
> seems to be entering a loop and
> never returns.
>
> I have tried to call the render() method, but haven't had any luck yet.
>
> Any help would be much appreciated
>
> -- pokkie
> --
> View this message in context:
> http://www.nabble.com/RepeatingView-%3A-Removing-a-table-row-tf4331444.html#a12335918
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
package web.repeat;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.CheckBox;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.repeater.RepeatingView;
import org.apache.wicket.model.PropertyModel;

@SuppressWarnings("serial")
public class RepeatingTest extends WebPage {

    private static class Item implements Serializable {
        
        public final int number;
        public boolean selected = false;
        
        public Item(int number) {
            this.number = number;
        }
    }
    
    private static class ItemContainer extends WebMarkupContainer {
        
        public final Item item;

        public ItemContainer(String id, Item item) {
            super(id);
            this.item = item;
            add(new Label("itemNumber", new PropertyModel(item, "number")));
            add(new CheckBox("itemSelected", new PropertyModel(item, "selected")));
        }
    }
    
    private class ItemsForm extends Form {
        
        private List<ItemContainer> itemContainers = new ArrayList<ItemContainer>();
        
        public ItemsForm(String id) {
            super(id);
            RepeatingView itemRepeater = new RepeatingView("itemRepeater");
            add(itemRepeater);
            for (int i = 0 ; i < 10 ; i++) {
                ItemContainer itemContainer = new ItemContainer("itemContainer" + i, new Item(i));
                itemContainers.add(itemContainer);
                itemRepeater.add(itemContainer);
            }        
        }
        
        protected void onSubmit() {
            Iterator<ItemContainer> itemContainerIterator = itemContainers.iterator();
            while (itemContainerIterator.hasNext()) {
                ItemContainer itemContainer = itemContainerIterator.next();
                if (itemContainer.item.selected) {
                    itemContainer.remove();
                    itemContainerIterator.remove();
                }                
            }
        }
    }
    
    public RepeatingTest() {
        add(new ItemsForm("itemsForm"));
    }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to