jursit
21.11.2010, 18:44
Всем привет!
Задача: есть компонент Tree, который использует данные из файла data.txt (по сути xml),
но берет не все ноды, а только те, у которых стоит заданный аттрибут (@status == 'active'). Есть функционал добавления новых разделов пользователем.
Проблема: при добавлении нового элемента к разделу, который создал пользователь, список обновляется и в него грузятся ВСЕ элементы из xml-файла , без учета фильтрации по аттрибуту. Однако, если добавлять новые элементы к позициям, которые приходят из файла, ничего такого не происходит, все добавляется корректно.
Вот код моего примера:
<?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>
Задача: есть компонент Tree, который использует данные из файла data.txt (по сути xml),
но берет не все ноды, а только те, у которых стоит заданный аттрибут (@status == 'active'). Есть функционал добавления новых разделов пользователем.
Проблема: при добавлении нового элемента к разделу, который создал пользователь, список обновляется и в него грузятся ВСЕ элементы из xml-файла , без учета фильтрации по аттрибуту. Однако, если добавлять новые элементы к позициям, которые приходят из файла, ничего такого не происходит, все добавляется корректно.
Вот код моего примера:
<?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>