2009-09-28 56 views
1

我有以下幾點:組合框的dataProvider

<mx:RemoteObject id="myCFC" destination="ColdFusion" source="components.myCFC" showBusyCursor="true"> 
    <mx:method name="getStuff" result="UserHandler(event);"/> 
</mx:RemoteObject> 

... 
<mx:ComboBox id="propertyCode" dataProvider="{qry_stuff}" labelField="name" /> 

Index.as有:

[Bindable] public var qry_stuff:ArrayCollection = new ArrayCollection; 

private function UserHandler(event:ResultEvent):void { 
    qry_stuff= event.result as ArrayCollection; 
} 

public function init():void { 
    /* call my remote Object to get my data */ 
    myCFC.getStuff(); 
    } 

我的問題是該組合框顯示的翻譯:

我知道有什麼錯cfc和getStuff中有一個名爲「name」的字段。爲什麼它不顯示對象的值? 在此先感謝。

+0

什麼是event.result的結構?我猜測問題是在創建ArrayCollection。你也可以檢查ArrayCollection的大小。 – Glenn 2009-09-29 03:29:05

+0

ArrayCollection的大小似乎是正確的。 (它等於來自查詢的記錄數)。不知道什麼event.result是/。我從http://blog.tygate.com/?p=463 複製/粘貼/修改此代碼,請讓我知道您的想法。 – CFNinja 2009-09-29 14:01:21

+0

你有沒有嘗試過使用其他的東西作爲labelField? ComboBox能顯示「其他的東西」嗎? – 2009-09-29 18:29:54

回答

1

ComboBox類上有一個名爲labelField的屬性。繼續並將其設置爲返回數據的名稱字段。如果這不起作用 - 您需要從CF中調試返回的值 - 以確保name屬性實際上也在客戶端上填充。

此外,您的數據可能被作爲一個數組返回(不是一個ArrayCollection) - 在這種情況下,你就需要設置:

qryStuff = ArrayCollection(event.result as Array); 

注意:您可能還需要「強型'您的響應數據通過創建一個ActionScript值對象 - 以便它不僅僅是從CF返回的通用'對象'。然後,您可以使用[RemoteClass(alias =「com.sample.MyCFC」)]元數據標記將該值對象映射到您的服務器端VO。

0

在我的cfc中,我不得不明確地設置數據/標籤。