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