Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Tree.dataPrivider и XML (http://www.flasher.ru/forum/showthread.php?t=91744)

Azy 07.02.2007 15:49

Tree.dataPrivider и XML
 
Код:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ed="ed.*" creationComplete="initEditor()">
        <mx:Script>
                <![CDATA[
                        public function initEditor():void
                        {
                                var scriptUrl:String        = "http://192.168.0.6/index.php";
                                tree.setUrl(scriptUrl);
                                tree.loadData();
                        }
                ]]>
        </mx:Script>

        <mx:Panel title="Редактор прайс-листов" height="100%" width="100%" paddingBottom="10" paddingLeft="10" paddingRight="10" paddingTop="10">
                <mx:HBox width="100%" height="100%">
                        <mx:VBox width="25%" height="100%">
                                <ed:eTree id="tree" width="100%" height="100">
                                       
                                </ed:eTree>
                        </mx:VBox>
                        <mx:VBox width="75%" height="100%">
                                <mx:DataGrid width="100%" height="100%">
                                       
                                </mx:DataGrid>
                        </mx:VBox>
                </mx:HBox>
        </mx:Panel>
</mx:Application>

и
Код:

// ActionScript file
package ed
{
        import mx.controls.Tree;
        import flash.events.Event;
        import flash.net.URLRequest;
        import flash.net.URLLoader;       
       
        public class eTree extends Tree
        {
                public var url:String;
                public var myLoader:URLLoader
                public var xml:XML;
               
                public function eTree()
                {
                        super();               
                }
               
                public function setUrl(newUrl:String):void
                {
                        this.url        = newUrl;
                }
               
                public function loadData():void
                {
                        xml                                                        = new XML();
                       
                        var myXMLURL:URLRequest                = new URLRequest(url+"?do=getXMLTree");
                        myLoader                                        = new URLLoader(myXMLURL);
                       
                        myLoader.addEventListener("complete", xmlLoaded);
                }
               
                public function xmlLoaded(evtObj:Event):void
                {
                        //trace(xml.);
                        this.dataProvider = myLoader.data;
                }
        }
}

При установке this.dataProvider = myLoader.data; вместо дерева в компоненте появляется xml, который получаю с сервера. Где ошибка?
PS получаемый XML:
Код:

<?xml version="1.0" encoding="utf-8"?>
<nodes>
        <node label="Производственное оборудование" path ="01" id="1">
                <node label="Металлургическое оборудование" path ="0101" id="2">
                        <node label="asdfasd" path ="010101" id="294"/>
                </node>
                <node label="Металлообрабатывающее оборудование" path ="0102" id="3"/>
                <node label="Нефтегазоперерабатывающее оборудование" path ="0103" id="4"/>
        </node>
</nodes>


etc 07.02.2007 16:29

Ну правильно, формат данных по дефолту — text.
См. свойство dataFormat у URLLoader.

И ещё — сервер выдает верный Content-Type, что это text/xml, а не text/plain?

Nirth 07.02.2007 16:35

Загружай через HTTPService поставь формат e4x и не парься.

Если XML будет перегружатся или изменятся то сделай цепочку - HTTPService -> XML -> XMLListCollection, тогда при изменении XML, у тебя будет обновлятся автоматически (HTTPService и XMLListCollection байндятся).

Nirth 07.02.2007 17:29

Код:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
                                creationComplete="dataLoader.send()">
                                                       
        <mx:HTTPService url="data.xml" resultFormat="e4x"
                                        id="dataLoader"/>
                                               
        <mx:Tree labelField="@label"
                        showRoot="false">                               
                <mx:XMLListCollection source="{dataLoader.lastResult.children()}"/>
        </mx:Tree>
</mx:Application>


etc 07.02.2007 17:37

Nirth, не MXML единым :)
Тем более, тут кастомный компонент.

Azy 07.02.2007 17:37

__etc
вот-вот =)

хочу чтобы все динамически подгружалось. в смысле методами класса а не зависило от того что там в mxml-e написано

Проблема решена
добавил labelField="@label".

Nirth 07.02.2007 17:39

Цитата:

Nirth, не MXML единым
Тем более, тут кастомный компонент.
Я пример написал, того как можно грузить с помощью HTTPService который сам переводит в нужный формат и парсит, и еще может ошибки пофиксить.

То на каком языке это напишет автор не играет никакой роли, мне просто быстрее MXML.


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

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