Yes, the problem was I had to create container and then on onClick()

target.addComponent(newInteractivePanel);

Thanks everybody



RaBe wrote:
> 
> 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 <[email protected]> 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, [email protected] 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: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
> 
> 
> 

-- 
View this message in context: 
http://old.nabble.com/dynamically-adding-components-to-a-ListView-tp26626657p27350292.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to