2012-03-14 49 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