Выбранный элемент должен указывать на точный элемент из поставщика данных. Для простых типов, из которых может состоять поставщик данных (например, 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"/>