Показать сообщение отдельно
Старый 22.10.2011, 22:02
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 1  
Ответить с цитированием
goodguy
Banned

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
По умолчанию 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" } );