2011-08-09 82 views
3

我倒是用我的數據庫字段值在我<s:DropDownList<S:DropDownList的selectedItem屬性

我嘗試做

<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"

感謝您的幫助

+0

沒有出現在下拉列表或在提示? – Benny

回答

6

所選項目應指向數據提供者的確切項目。對於數據提供者可以組成的簡單類型(如String,Booleanint),它可以等於該值。對於複雜對象,它應該是完全相同的值(指向同一內存單元的指針)。

因此,在您的情況下,"Monsieur"不是由Object s組成的數據提供者的項目,而是由String s組成。但以下情況並非如此:

<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"/> 
+0

謝謝,你的解決方案工作得很好 – Flex60460

相關問題