Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Компонент Tree - некорректное поведение при добавлении элементов (http://www.flasher.ru/forum/showthread.php?t=146903)

jursit 21.11.2010 18:44

Компонент Tree - некорректное поведение при добавлении элементов
 
Вложений: 1
Всем привет!

Задача: есть компонент Tree, который использует данные из файла data.txt (по сути xml),
но берет не все ноды, а только те, у которых стоит заданный аттрибут (@status == 'active'). Есть функционал добавления новых разделов пользователем.
Проблема: при добавлении нового элемента к разделу, который создал пользователь, список обновляется и в него грузятся ВСЕ элементы из xml-файла , без учета фильтрации по аттрибуту. Однако, если добавлять новые элементы к позициям, которые приходят из файла, ничего такого не происходит, все добавляется корректно.

Вот код моего примера:
Код AS3:

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
                                          xmlns:s="library://ns.adobe.com/flex/spark"
                                          xmlns:mx="library://ns.adobe.com/flex/mx">
        <fx:Declarations>
                <fx:XML id="sourceXML" source="data.txt" format="e4x" />
                <mx:XMLListCollection id="xmlListColl" source="{sourceXML.department.(@status =='active')}" />
        </fx:Declarations>
 
        <s:layout>
                <s:VerticalLayout/>
        </s:layout>
 
        <fx:Script>
                <![CDATA[
                        import mx.collections.XMLListCollection;
 
                        private function addEmployee():void
                        {
                                if (tree.selectedItem) {
                                var newNode:XML = <employee/>;
                                newNode.@title = empName.text;
                                (tree.selectedItem as XML).appendChild(newNode);}
                        }
 
                        private function addNewBranch():void
                        {
                                var newNode:XML = <department title='New branch' isBranch="true" status="active"></department>;
                                xmlListColl.addItem(newNode);
                        }
 
                        ]]>
        </fx:Script>
 
 
 
        <mx:Tree id="tree" top="72" left="50"
                        dataProvider="{xmlListColl}"
                        labelField = "@title"
                        height="224" width="179"/>
        <s:HGroup>
                <s:Button label="Add Operations Employee" click="addEmployee()"/>
                <s:TextInput id="empName"/>
        </s:HGroup>
 
        <s:Button label="Add New Branch" click="addNewBranch();"/>
</s:WindowedApplication>



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

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