Excellent, works perfect. But the only change is instead of getModelObjectAsString() use getDefaultModelObjectAsString(). Very good idea, but the only problem is if I have 7 option groups with each option group with 5-6 options HTML will be really long.
Thanks, Raghu tbt wrote: > > > homar70 wrote: >> >> Hi, >> >> I have trouble of finding out how to make dynamic optgroups and options >> from the select and selectoptions in wicket-extensions. The same issue is >> described in this post >> http://www.nabble.com/Select-and-SelectOptions-td11684707.html#a11695243 >> >> Any ideas? >> >> -Spratle >> > > Hi > > You could use the following classes in wicket-extensions to create an > optgroup class. I have created a static dropdown with optgroups and the > example is given below. A repeater like ListView or RepeatingView can be > used to make it dynamic > > > public class OptGroup extends SelectOption > { > String label; > > public OptGroup(String id, String label) > { > super(id); > this.label = label; > } > > protected void onComponentTag(final ComponentTag tag) > { > checkComponentTag(tag, "optgroup"); > Select select = (Select)findParent(Select.class); > if (select == null) > { > throw new WicketRuntimeException( > "OptGroup component [" + > getPath() + > "] cannot find its > parent Select. All OptGroup components must be a > child of or below in the hierarchy of a Select component."); > } > > > tag.put("label", label); > } > } > > > public class CustomSelectOption extends SelectOption > { > public CustomSelectOption(String id,String displayValue) > { > super(id,new Model(displayValue)); > } > > protected void onComponentTagBody(final MarkupStream markupStream, final > ComponentTag openTag) > { > replaceComponentTagBody(markupStream, openTag, > getModelObjectAsString()); > } > } > > > ................................... > > OptGroup swedishOptGroup = new OptGroup("optGroup1","Swedish Cars"); > SelectOption option1 = new > CustomSelectOption("option1","Volvo"); > swedishOptGroup.add(option1); > SelectOption option2 = new CustomSelectOption("option2","Saab"); > swedishOptGroup.add(option2); > select.add(swedishOptGroup); > > OptGroup germanOptGroup = new OptGroup("optGroup2","German > Cars"); > SelectOption option3 = new > CustomSelectOption("option3","Mercedes"); > germanOptGroup.add(option3); > SelectOption option4 = new CustomSelectOption("option4","Audi"); > germanOptGroup.add(option4); > select.add(germanOptGroup); > > .................................................. > > > <select wicket:id="select"> > <optgroup wicket:id="optGroup1"> > <option wicket:id="option1"></option> > <option wicket:id="option2"></option> > </optgroup> > <optgroup wicket:id="optGroup2"> > <option wicket:id="option3"></option> > <option wicket:id="option4"></option> > </optgroup> > </select> > -- View this message in context: http://www.nabble.com/Dynamic-Select-and-SelectOptions-tp21076798p24929879.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]
