PDA

Просмотр полной версии : Заполнение XML в DataGrid


Aloran
18.08.2009, 13:07
Добрый день уважаемые. Нужна помощь в одном вопросе:
Имеется программа которая отправляет запрос в MySQL через php и получает в ответ таблицу в виде XML со следующей структурой (количество строк и столбцов в зависимомти от запроса, а также имя тега "field"может меняться):

<table>
<row>
<field1></field1>
<field2></field2>
...
<fieldN</fieldN>
</row>
<row>
<field1></field1>
<field2></field2>
...
<fieldN</fieldN>
</row>
...
<row>
<field1></field1>
<field2></field2>
...
<fieldN</fieldN>
</row>
</table>

Этот XML необходимо теперь засунуть в DataGrid, в котором названия столбцов станут названия тегов внутри <row></row>.
Весь форум перерыл + справочники от Adobe, но так ничего и не выходит. Везде примеры для фиксированых по количеству столбцов, а мне именно по не известному надо. Направте на путь истиный. Заранее благодарен.

wvxvw
18.08.2009, 13:13
Так у вас со стандартной DataGrid ничего и не получится, в ней не может быть разное количество колонок в разных рядах...

Aloran
18.08.2009, 14:50
В таблице у каждой строки одинаковое количество столбцов. Но у разных таблиц кол-во столбцов естественно может отличаться.

wvxvw
18.08.2009, 15:14
Ну, тогда, например,
myDataGrid.columns = [new DataGridColumn(), new DataGridColumn() ...];

Aloran
18.08.2009, 15:40
Большое спасибо wvxvw, но можно вас попросить чуть подробнее что к чему, так как Flex'ом всего 4-й день занимаюсь и еще не совсем понимаю. Например что то надо писать в эти DataGridColumn?

wvxvw
18.08.2009, 16:17
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
applicationComplete="init()"
>
<mx:Script>
<![CDATA[
import mx.controls.dataGridClasses.DataGridColumn;

private function createColumn(xml:XML):DataGridColumn
{
var c:DataGridColumn = new DataGridColumn(xml.localName());
// set additional column properties here
return c;
}

private function init():void
{
var list:XMLList = fooXML.row;
var columns:Array = [];
list[0].*.(columns.push(createColumn(valueOf())));
fooDG.columns = columns;
fooDG.dataProvider = list;
}
]]>
</mx:Script>
<mx:XML id="fooXML">
<table>
<row>
<field1>A</field1>
<field2>B</field2>
<fieldN>C</fieldN>
</row>
<row>
<field1>D</field1>
<field2>E</field2>
<fieldN>F</fieldN>
</row>
<row>
<field1>G</field1>
<field2>H</field2>
<fieldN>J</fieldN>
</row>
</table>
</mx:XML>
<mx:DataGrid id="fooDG"/>
</mx:Application>

Aloran
18.08.2009, 16:46
Большое вам человеческое Спасибо уважаемый wvxvw!!! Все зарботало!!!