looks as it has been solved here:

http://stackoverflow.com/questions/2114351/dynamically-add-components-to-listview-in-wicket/

bert

On Sun, Jan 24, 2010 at 13:04, Sven Meier <s...@meiers.net> wrote:
> Hi,
>
> you'll have to tell the request target which components to redraw:
> Put your list inside a markupcontainer and use addComponent().
>
> Sven
>
> zdmytriv wrote:
>>
>> Could anyone tell me why it doesn't work? Thanks
>>
>> InteractivePanelPage.html
>>
>> <table>
>>    <tr>
>>        <td> # Add Panel </td>
>>    </tr>
>>    <tr wicket:id="interactiveListView">
>>        <td>
>>                </td>
>>    </tr>
>> </table>
>>
>> InteractivePanelPage.java
>>
>> // ... imports
>> public class InteractivePanelPage extends WebPage {
>>    public LinkedList<InteractivePanel> interactivePanels = new
>> LinkedList<InteractivePanel>();
>>
>>    private ListView<InteractivePanel> interactiveList;
>>
>>    public InteractivePanelPage() {
>>        add(new AjaxLink<String>("addPanelLink") {
>>            private static final long serialVersionUID = 1L;
>>
>>           �...@override
>>            public void onClick(AjaxRequestTarget target) {
>>                try {
>>                    System.out.println("link clicked");
>>
>>                    InteractivePanel newInteractivePanel = new
>> InteractivePanel(
>>                            "interactiveItemPanel");
>>                    newInteractivePanel.setOutputMarkupId(true);
>>
>>
>> interactiveList.getModelObject().add(newInteractivePanel);
>>                } catch (Exception e) {
>>                    e.printStackTrace();
>>                }
>>            }
>>        });
>>
>>        interactivePanels.add(new
>> InteractivePanel("interactiveItemPanel"));
>>
>>        interactiveList = new
>> ListView<InteractivePanel>("interactiveListView",
>>                new PropertyModel<List<InteractivePanel>>(this,
>> "interactivePanels")) {
>>            private static final long serialVersionUID = 1L;
>>
>>           �...@override
>>            protected void populateItem(ListItem<InteractivePanel> item) {
>>                item.add(item.getModelObject());
>>            }
>>        };
>>
>>        interactiveList.setOutputMarkupId(true);
>>
>>        add(interactiveList);
>>    }
>>
>>    public List<InteractivePanel> getInteractivePanels() {
>>        return interactivePanels;
>>    }
>> }
>>
>> InteractivePanel.html
>>
>> <html xmlns:wicket>
>> <wicket:panel>
>> <input type="button" value="BLAAA" wicket:id="simpleButton"/>
>> </wicket:panel>
>> </html>
>>
>> InteractivePanel.java
>>
>> // ... imports
>> public class InteractivePanel extends Panel {
>>    private static final long serialVersionUID = 1L;
>>
>>    public InteractivePanel(String id) {
>>        super(id);
>>
>>        add(new Button("simpleButton"));
>>    }
>> }
>>
>>
>>
>>
>>
>>
>>
>>
>> zkn wrote:
>>
>>>
>>> On 22.01.2010, at 03:18, vasil.pup...@gmail.com wrote:
>>>
>>>
>>>>
>>>>
>>>> http://old.nabble.com/dynamically-adding-components-to-a-ListView-td26626657.html
>>>>
>>>> In this post you said "You found it". Could you please post how did you
>>>> do it?
>>>>
>>>> Zinovii
>>>>
>>>
>>> in addPanel()
>>>
>>> replaced
>>> panels.add(panel);
>>>
>>> with
>>>
>>> panels.getModelObject().add(panel);
>>>
>>>
>>>
>>>
>>>
>>> On 04.12.2009, at 00:17, zkn wrote:
>>>
>>>
>>>>
>>>> found it.
>>>>
>>>> On 03.12.2009, at 16:19, zkn wrote:
>>>>
>>>>
>>>>>
>>>>> Hi,
>>>>>
>>>>> I'm trying to dynamically add components to an existing ListView but I
>>>>> can't figure out how to do that. Here is my case:
>>>>>
>>>>> MyPanelContainer  class with markup
>>>>>
>>>>> <wicket:panel>
>>>>>        <wicket:container wicket:id="panels">
>>>>>                <wicket:container wicket:id="panel" />
>>>>>        </wicket:container>
>>>>>         # add panel </wicket:panel>
>>>>>
>>>>> and here is how I create the container in the constructor of my page
>>>>>
>>>>> ..
>>>>> MyPanelContainer container = new MyPanelContainer("panels_list_1");
>>>>> List<MyPanel> panels = new ArrayList<MyPanel>();
>>>>>
>>>>> for (int j = 0; j < 5; j++) {
>>>>>        MyPanel panel = new MyPanel("panel");
>>>>>
>>>>>        .....
>>>>>
>>>>>        panels.add(panel);
>>>>> .
>>>>>
>>>>>
>>>>> container.add(new ListView<MyPanel>("panels", panels) {
>>>>>        protected void populateItem(ListItem<MyPanel> item) {
>>>>>                item.add( item.getModelObject());
>>>>>        }
>>>>> });
>>>>> add(Container);
>>>>> ..
>>>>>
>>>>> This works fine and I can see all  MyPanel inside the container.
>>>>>
>>>>> Now I'm trying to add another MyPanel inside the container on user
>>>>> click. Here is the constructor of MyPanelContainer
>>>>>
>>>>> public MyPanelContainer(String id) {
>>>>>                super(id);
>>>>>                ....
>>>>>                add(new Link("addPanel") {
>>>>>                               �...@override
>>>>>                                public void onClick() {
>>>>>                                        addPanel();
>>>>>                                }
>>>>>
>>>>>                        });
>>>>> .
>>>>>
>>>>> ..
>>>>> public void addPanel() {
>>>>>
>>>>>                ListView< MyPanel > panels = (ListView< MyPanel >)
>>>>> get("panels");
>>>>>
>>>>>                MyPanel panel = new MyPanel("panel");
>>>>>                ...
>>>>>                panels.add(panel);
>>>>>        }
>>>>>
>>>>> Basically addPanel() does the same thing as in page constructor to add
>>>>> panels to the list but nothing shows up.
>>>>>
>>>>> Thanks in advance for your help
>>>>>
>>>>> Ozkan
>>>>>
>>>>>
>>>
>>>
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to