Flex Spark DataGrid - PullRequest
       47

Flex Spark DataGrid

0 голосов
/ 14 марта 2012

У меня есть ошибка при добавлении провайдера данных в мою таблицу данных спарка:

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

1 Ответ

3 голосов
/ 14 марта 2012

Ваш код указывает 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>

Нельзя указывать dataProvider в обоих случаях.

Кроме того, я добавлю, что ваш код, как есть, использует 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);
}
...