Как добавить элемент в мой dataProvider?(Flex) - PullRequest
1 голос
/ 05 сентября 2010

Что я хотел бы сделать, это просто добавить к dataProvider, но когда я это сделаю, я получаю сообщение об ошибке.

Вот код, который я пытаюсь запустить ...

dg.dataProvider.addItem(obj.ResultSet.Result[i]);

Это внутри цикла for, использующего i в качестве целого числа.

Это прекрасно работает при выполнении ...

dg.dataProvider = obj.ResultSet.Result

Но это не сработает для меня, потому что мне нужнодобавить к поставщику данных более одного раза.Я получаю результаты партиями по 10, и мне нужно добавить каждую партию к провайдеру данных, когда он будет получен.

Я также пытался сделать ...

var dgDP:dataProvider = new dataProvider();

Но дляпочему-то Флекс не узнает это ...

Есть идеи, как мне это сделать?

Ответы [ 2 ]

1 голос
/ 05 сентября 2010

Вы должны инициализировать dataProvider.

<mx:DataGrid creationComplete="onDGCreate(event)"/>

Сценарий:

public function onDGCreate(e:Event):void
{
    var dg:DataGrid = e.currentTarget as DataGrid;
    dg.dataProvider = new ArrayCollection();
    //or
    dg.dataProvider = new XMLListCollection();
}

Теперь это будет работать:

dg.dataProvider.addItem(obj.ResultSet.Result[i]);

Когда вы назначаете что-токроме ArrayCollection и XMLListCollection в свойство dataProvider, оно будет преобразовано в объект ICollectionView .Единственным реализатором этого интерфейса является класс ListCollectionView (базовый класс ArrayCollection и XMLListCollection), который имеет методы addItem и addItemAt .

1 голос
/ 05 сентября 2010

dataProvider - это свойство, которое находится во многих классах ListBased.Это не тип данных.Какой тип данных у вашего dataProvider?Это может быть XML, массив, XMLListCollection, ArrayCollection, XMLList или универсальный объект.[и я предполагаю, что другие типы данных поддерживаются).

Способ добавления чего-либо в ваш dataProvider полностью зависит от типа используемого вами dataProvider.

В Flex 4 объекты dataProvider должны реализовывать интерфейс IList, но в Flex 3 dataProvider являются общими объектами.

В вашей ситуации, поскольку у вас уже есть объекты, я просто зациклюповерх них и добавьте их в массив или ArrayCollection, а затем используйте массив hat в качестве dataProvider.

...