Динамическое добавление строк AdvancedDataGrid Flex - PullRequest
1 голос
/ 23 июня 2011

У меня AdvancedDataGrid, динамически создаваемый из HTML-таблицы. HTML предоставляется сервером, поэтому мой код должен работать динамически для разных столбцов / строк.

У меня строятся столбцы, и они отображаются правильно, однако когда я добавляю строки, у меня возникают проблемы. следующий фрагмент кода показывает итерацию по всем столбцам и добавление значения под каждым из этих столбцов к объекту (для создания полной строки), а затем добавление этого значения в коллекцию ArrayCollection, которая впоследствии устанавливается в dataProvider для AdvancedDataGrid

//create an item to work with
var chartItem:Object = new Object();
for( var j:int = 0; j < columnResult.length ; j++ ) 
{
    //this is the data that goes under the column (headerArray)
    var item:String = removeformat(removetd(columnResult[j]));
    //grab the header (this is which column the value will be added
    var head:String = headerArray[j];
    //set the value to header (pair)
    chartItem[head] = item;
}
//add the chartItem (row) to the main collection
arr.addItem(chartItem);

моя проблема в том, что когда значение "head" равно 0, поскольку в заголовке столбца указано "0", элемент добавляется в позиции [0], а не в 0 в виде строки.

Я посмотрел несколько примеров и попробовал:

chartItem.head, но при этом предполагается, что заголовок столбца равен 'head', а не захватывает значение заголовка var

1 Ответ

1 голос
/ 25 июня 2011

Невозможно использовать числа в качестве индекса в ассоциативных массивах.

В большинстве случаев индекс в ассоциативном массиве является просто именем переменной объекта.Вот почему вы можете получить доступ к данным с помощью obj["someKey"] или obj.someKey.Конечно, вы можете использовать символы в ваших ключах, которые не допускаются в именах переменных (например, пробелы, специальные символы).Однако вы можете получить доступ к ним только в скобках, а не через точку (obj["foo/bar"] работает, obj.foo/bar не будет работать).Итак, это не рекомендуется ...

Ну, вернемся к вашей проблеме: я бы посоветовал вам поставить префикс всех имен столбцов с символом (например, использовать "_0").Поскольку вы создаете столбцы AdvancedDataGrid динамически, это не должно быть проблемой.Вы можете explicityl установить headerText этих столбцов, чтобы в заголовке столбца по-прежнему отображалось «0» вместо «_0».

...