Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Заполнение XML в DataGrid (http://www.flasher.ru/forum/showthread.php?t=128818)

Aloran 18.08.2009 13:07

Заполнение XML в DataGrid
 
Добрый день уважаемые. Нужна помощь в одном вопросе:
Имеется программа которая отправляет запрос в 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

Ну, тогда, например,
Код AS3:

myDataGrid.columns = [new DataGridColumn(), new DataGridColumn() ...];


Aloran 18.08.2009 15:40

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

wvxvw 18.08.2009 16:17

Код AS3:

<?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!!! Все зарботало!!!


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

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