<s: DropDownList selectedItem - PullRequest
       25

<s: DropDownList selectedItem

3 голосов
/ 09 августа 2011

Я бы использовал значение поля моей базы данных, чтобы выбрать значение на моем <s:DropDownList

Я пытаюсь сделать

<s:DropDownList  dataProvider="{DP_PAT_CIVIL}" selectedItem="@{objectUser.usrQualParent}"/>

Но выбор не появляется, ничего не появляется в приглашении.

objectUser.usrQualParent представляет значение с присутствующим в поставщике данных DP_PAT_CIVIL.

Например, поставщик данных:

[Bindable]
        private var DP_PAT_CIVIL:ArrayCollection = new ArrayCollection (
            [{label:"Monsieur" , data:"0"},
            {label:"Madame", data:"1"},
            {label:"Mademoiselle", data:"2"},
            {label:"Le Jeune", data:"3"}]

            );

И objectUser.usrQualParent значение равно "Monsieur".

Спасибо за помощь

1 Ответ

6 голосов
/ 09 августа 2011

Выбранный элемент должен указывать на точный элемент из поставщика данных. Для простых типов, из которых может состоять поставщик данных (например, String, Boolean или int), это значение может быть равно этому значению. Для сложных объектов это должно быть одно и то же значение (указатель на один и тот же блок памяти).

Таким образом, в вашем случае "Monsieur" не является элементом поставщика данных, который состоит из Object с, но не String с. Но следующее тоже не так:

<s:DropDownList  dataProvider="{DP_PAT_CIVIL}" selectedItem="{{label:"Monsieur" , data:"0"}}"/>

из-за того, что он недавно создан, но не тот же объект.

Я рекомендую вам создать некоторую функцию для поиска точно такого же значения из существующего поставщика данных, используя вашу строку в качестве ключа:

private function getSelectedItem(dp:ArrayCollection, key:String):Object
{
    if (dp && dp.length > 0)
    {
        for each (var item:Object in dp)
        {
            if (item.label == key)
                return item;
        }
    }
    return null;
}

Теперь ваш список:

<s:DropDownList  dataProvider="{DP_PAT_CIVIL}" 
    selectedItem="{getSelectedItem(DP_PAT_CIVIL, objectUser.usrQualParent)}" 
    change="objectUser.usrQualParent = event.currentTarget.selectedItem.label"/>
...