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]
