On Friday 09 November 2007 11:22:20 Toscano wrote:
> Hello,
>
> I found some questions related to this topic, but I couldn't make it to
> work.
> I have two dropdowns, countries and regions. The easy thing is that I load
> the regions when the country has been selected, and I use
> AjaxFormComponentUpdatingBehavior for this and works.
> The thing is that we don't have Regions for all the countries, so in that
> cases I want to disable the dropdown.
>
> This is the code I have:
>
>
> // countryWork is the first dropdown
> countryWork.add(new AjaxFormComponentUpdatingBehavior("onchange")
> {
>             protected void onUpdate(AjaxRequestTarget target)
>             {        target.addComponent(regionWork);            }
> });
>
> // and regionWork is the region
>
>  IModel regionModelChoices = new AbstractReadOnlyModel()
>         {
>             public Object getObject(Component component)
>             {
>                if (professionalInfo.getCountryWork()!=null)
>                      regions =
> getRegionDaoInterface().getRegions(professionalInfo.getCountryWork().getCou
>ntryID()); if (regions.size()==0)
>                            regionWork.setEnabled(false);
>                else
>                            regionWork.setEnabled(true);
>                return regions;
>             }
>         };
>
>           regionWork  = new DropDownChoice("regionWork", new Model(),
> regionModelChoices,
>           new ChoiceRenderer("regionName", "regionID"));
>           regionWork.setOutputMarkupId(true);
>
> The dropdown changes, but with one refresh delay. For example, I have
> regions for Canada but not for Spain. If I change to Canada, nothing
> happens, but the next change in the country will enable the dropdown.
>
> Any ideas?
>
> Thank you very much for your time,
> Oskar

Probably that is because this component is already rendered.

In general you shouldn't change components state inside a model because this 
code is called at render stage. In your case you can call 
regionWork.setEnabled() inside onUpdate(AjaxRequestTarget target).


Dima

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to