Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   DataGrid, проблема с добавлением строк в таблицу (http://www.flasher.ru/forum/showthread.php?t=170344)

goodguy 22.10.2011 22:02

DataGrid, проблема с добавлением строк в таблицу
 
Сижу уже второй час, перерыл весь гугл, так и не нашел ответа на такую тупость:
Есть массив строк, язык в которых выбирается в зависимости от настроек приложения:
Код AS3:

private var _dataGridColumns:Array         = Setup.language == 3 ? ["№ ", "Room Creator", "Room ID"] : ["№ ", "Создатель Комнаты", "ID Комнаты"];

Есть DataGrid, в которую добавляю колонки следующим образом:
Код AS3:

_dgColumn1 = new DataGridColumn(_dataGridColumns[0]);
_dgColumn1.width = 40;
_dgColumn2 = new DataGridColumn(_dataGridColumns[1]);
_dgColumn2.width = 475;
_dgColumn3 = new DataGridColumn(_dataGridColumns[2]);
_dataGrid = new DataGrid();
_dataGrid.addColumn(_dgColumn1);
_dataGrid.addColumn(_dgColumn2);
_dataGrid.addColumn(_dgColumn3);

и есть метод, призваннй заполнять таблицу строками:

Код AS3:

private function populateDataGrid():void {
        if (!_dataGrid) return;
            var col1:String = _dataGridColumns[0];
            var col2:String = _dataGridColumns[1];
            var col3:String = _dataGridColumns[2];
        _dataGrid.addItem( { col1 : "1", col2 : "Чувак Чувакович Чуваков", col3 : "100500" } );
}

При таком подходе я получаю совершенно пустую строку.

Хотя если сделать так:
Код AS3:

private function populateDataGrid():void {
        if (!_dataGrid) return;
        _dataGrid.addItem( { "№ " : "1", "Room Creator" : "Чувак Чувакович Чуваков", "Room ID" : "100500" } );
}

То все отлично заполняется.
Вопрос: почему не работает первый вариант?
Для меня совершенно не допустимо передавать фиксированные строки в качестве ключей. Полюбому надо переменные.
Как побороть проблему?

Добавлено через 9 минут
Поторопился с темой. Только создал, и сразу же сам нашел решение.
Если кому-то пригодится, то
Нужно название колонки ставить как headerText, а в качестве параметра конструктора передавать название переменной, через которую будет обращение:
Код AS3:

_dgColumn1 = new DataGridColumn("FirstCol");
_dgColumn1.headerText        = _dataGridColumns[0];

А далее уже так:
Код AS3:

_dataGrid.addItem( { FirstCol : "1", _dgColumn2 : "Чувак Чувакович Чуваков", _dgColumn3 : "100500" } );



Часовой пояс GMT +4, время: 15:14.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.