2012-03-14 58 views
0

我有一個錯誤在我的火花DataGrid中添加數據提供程序:的Flex星火DataGrid的

Multiple initializers for property 'dataProvider'. (note: 'dataProvider' is the default property of 'spark.components.DataGrid'). 

我的數據是從s:httpService聲明,我把它放在數據網格這樣的事情

<s:DataGrid includeIn="formState" x="348" y="57" width="287" dataProvider="{myHttpService}"> 
    <s:columns> 
     <s:ArrayList> 
      <s:GridColumn dataField="data1" headerText="Data Field 1"></s:GridColumn> 
      <s:GridColumn dataField="data2" headerText="Data Field 2"></s:GridColumn> 
      <s:GridColumn dataField="data3" headerText="Data Field 3"></s:GridColumn> 
     </s:ArrayList> 
    </s:columns> 
    <s:typicalItem> 
     <fx:Object dataField1="Sample Data" dataField2="Sample Data" dataField3="Sample Data"></fx:Object> 
    </s:typicalItem> 
    <s:ArrayList> 
     <fx:Object data1="data1" data2="data1" data3="data1"></fx:Object> 
     <fx:Object data1="data2" data2="data2" data3="data2"></fx:Object> 
     <fx:Object data1="data3" data2="data3" data3="data3"></fx:Object> 
     <fx:Object data1="data4" data2="data4" data3="data4"></fx:Object> 
    </s:ArrayList> 
</s:DataGrid> 

和我的HTTP服務是:

<s:HTTPService id="myHttpService" url="http://host.com/mydata.php"/> 
+0

試試你的數據提供程序爲{myHttpService爲ArrayList的} – 2012-03-14 03:45:19

回答

3

您的代碼無意中指定了兩次dataProvider 我認爲。

它首次在標籤上指定爲屬性,在此行上。

<s:DataGrid includeIn="formState" x="348" y="57" width="287" dataProvider="{myHttpService}"> 

它被指定爲DataGrid的孩子,這些區塊的第二次:

<s:ArrayList> 
    <fx:Object data1="data1" data2="data1" data3="data1"></fx:Object> 
    <fx:Object data1="data2" data2="data2" data3="data2"></fx:Object> 
    <fx:Object data1="data3" data2="data3" data3="data3"></fx:Object> 
    <fx:Object data1="data4" data2="data4" data3="data4"></fx:Object> 
</s:ArrayList> 

你不能在這兩種情況下指定數據提供程序。

此外,我將補充說,您的代碼正在使用myHttpService作爲dataProvider(位於第一行)。您可能希望將myHttpService調用的結果用作dataProvider;不是實際的myHttpService對象。

我相信你可以綁定到myHttpService.lastResults如果你想,我的偏好是有正式的結果處理程序與處理結果的交易,從概念上講是這樣的:

<s:HTTPService id="myHttpService" url="http://host.com/mydata.php" result="onMyResult(event)"/> 

protected function onMyResult(event:ResultEvent):void{ 
    this.myDataGrid.dataProvider = new ArrayCollection(event.results as Array); 
} 
+1

我明白了,我現在明白了。感謝您的澄清!很好的答案 – Jorge 2012-03-14 03:50:53