我将使用我的数据库字段值来选择<s:DropDownList
我尝试做
<s:DropDownList dataProvider="{DP_PAT_CIVIL}" selectedItem="@{objectUser.usrQualParent}"/>
但没有选择出现,提示中没有任何内容。
objectUser.usrQualParent表示数据提供者DP_PAT_CIVIL
中存在的值。
例如,dataprovider是:
[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"
。
感谢您的帮助
答案 0 :(得分:6)
所选项目应指向数据提供者的确切项目。对于数据提供者可以包含的简单类型(例如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"/>