почему не срабатывает в Tree присвоение openItems

6 views
Skip to first unread message

Shaman

unread,
Nov 11, 2009, 8:07:33 AM11/11/09
to ruf...@googlegroups.com
Методология вычитана из Adobe Quick start только датапровайдер XMLListCollection. При смене датапровайдера открытые папки не восстанавливаются. Что я не так делаю?

[code]
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" width="800" height="600" xmlns:local="*" creationComplete="init()">
<mx:Style>

</mx:Style>
    <mx:Script>
        <![CDATA[
            import mx.collections.XMLListCollection;
            import mx.events.FlexEvent;
            import mx.controls.Menu;
            import mx.collections.SortField;
            import mx.collections.Sort;
            import mx.collections.HierarchicalData;
           
            public var xdata:XML=
            <users name="root">
              <user id="7" name="a" isBranch="true">
                <map id="6619" name="Notify" ownerid="7" isBranch="true" permission="2">
                  <node id="62888" name="Notify" userid="null" mapid="6619" permission="2">
                    <node id="62889" name="1" userid="null" mapid="6619" permission="2">
                      <node id="62890" name="2" userid="null" mapid="6619" permission="2"/>
                    </node>
                    <node id="62891" name="3123123" userid="null" mapid="6619" permission="2">
                      <node id="62892" name="123123123" userid="null" mapid="6619" permission="2"/>
                    </node>
                  </node>
                  <node id="62893" name="123" userid="null" mapid="6619" permission="2"/>
                  <node id="62894" name="Untitled" userid="null" mapid="6619" permission="2"/>
                  <node id="62895" name="123123" userid="null" mapid="6619" permission="2">
                    <node id="62919" name="Untitled" userid="null" mapid="6619" permission="2"/>
                  </node>
                  <node id="62896" name="Untitled123123" userid="null" mapid="6619" permission="2"/>
                  <node id="62898" name="123123" userid="null" mapid="6619" permission="2"/>
                  <node id="62899" name="123" userid="null" mapid="6619" permission="2"/>
                  <node id="62900" name="Untitled" userid="null" mapid="6619" permission="2"/>
                </map>
              </user>
              <user id="8" name="a1" isBranch="true"/>
              <user id="162" name="demo" isBranch="true"/>
              <user id="161" name="demo1" isBranch="true">
                <map id="5263" name="demo1map" ownerid="161" isBranch="true" permission="1"/>
              </user>
              <user id="72" name="gleb" isBranch="true">
                <map id="3480" name="mapForTestCollaboration11" ownerid="72" isBranch="true" permission="2"/>
                <map id="821" name="Univer" ownerid="72" isBranch="true" permission="1"/>
              </user>
              <user id="11" name="m" isBranch="true">
                <map id="3796" name="bugg" ownerid="11" isBranch="true" permission="2"/>
                <map id="6000" name="ololo" ownerid="11" isBranch="true" permission="2"/>
                <map id="3443" name="share test" ownerid="11" isBranch="true" permission="2"/>
              </user>
              <user id="65" name="Tamila" isBranch="true">
                <map id="4359" name="icon" ownerid="65" isBranch="true" permission="2"/>
                <map id="4223" name="index" ownerid="65" isBranch="true" permission="2"/>
                <map id="5891" name="map style test" ownerid="65" isBranch="true" permission="2"/>
                <map id="4643" name="notes test" ownerid="65" isBranch="true" permission="2"/>
                <map id="5968" name="rr" ownerid="65" isBranch="true" permission="2"/>
                <map id="5830" name="share map" ownerid="65" isBranch="true" permission="2"/>
                <map id="6024" name="sps- 490" ownerid="65" isBranch="true" permission="2"/>
                <map id="5864" name="to import" ownerid="65" isBranch="true" permission="3"/>
                <map id="6122" name="wiki map" ownerid="65" isBranch="true" permission="2"/>
              </user>
              <user id="5" name="Tamila1" isBranch="true">
                <map id="2209" name="16.07" ownerid="5" isBranch="true" permission="2"/>
                <map id="2230" name="17.07" ownerid="5" isBranch="true" permission="2"/>
                <map id="2935" name="17.07ghjghj" ownerid="5" isBranch="true" permission="2"/>
                <map id="3491" name="2" ownerid="5" isBranch="true" permission="2"/>
                <map id="2924" name="21.07" ownerid="5" isBranch="true" permission="2"/>
                <map id="3607" name="3" ownerid="5" isBranch="true" permission="2"/>
                <map id="2798" name="3232" ownerid="5" isBranch="true" permission="2"/>
                <map id="6058" name="333" ownerid="5" isBranch="true" permission="2"/>
                <map id="3608" name="4" ownerid="5" isBranch="true" permission="2"/>
                <map id="3609" name="5" ownerid="5" isBranch="true" permission="2"/>
                <map id="3610" name="6" ownerid="5" isBranch="true" permission="2"/>
                <map id="3611" name="7" ownerid="5" isBranch="true" permission="2"/>
                <map id="2904" name="789" ownerid="5" isBranch="true" permission="2"/>
                <map id="3612" name="8" ownerid="5" isBranch="true" permission="2"/>
                <map id="3613" name="9" ownerid="5" isBranch="true" permission="2"/>
                <map id="5914" name="image lid" ownerid="5" isBranch="true" permission="2"/>
                <map id="6204" name="node attributes" ownerid="5" isBranch="true" permission="2"/>
                <map id="6022" name="owner" ownerid="5" isBranch="true" permission="2"/>
                <map id="6023" name="owner2" ownerid="5" isBranch="true" permission="2"/>
                <map id="3493" name="qqqqq" ownerid="5" isBranch="true" permission="2"/>
                <map id="3164" name="sps 371" ownerid="5" isBranch="true" permission="2"/>
                <map id="4417" name="sps440" ownerid="5" isBranch="true" permission="2"/>
                <map id="5398" name="sps514" ownerid="5" isBranch="true" permission="2"/>
              </user>
              <user id="6" name="Tamila2" isBranch="true">
                <map id="176" name="122" ownerid="6" isBranch="true" permission="1"/>
                <map id="290" name="3" ownerid="6" isBranch="true" permission="1"/>
                <map id="449" name="shared node 3" ownerid="6" isBranch="true" permission="1"/>
                <map id="739" name="sps 209" ownerid="6" isBranch="true" permission="1"/>
                <map id="479" name="sps169" ownerid="6" isBranch="true" permission="1"/>
                <map id="716" name="test(block)" ownerid="6" isBranch="true" permission="1"/>
                <map id="1180" name="test1" ownerid="6" isBranch="true" permission="2"/>
              </user>
              <user id="10" name="y" isBranch="true">
                <map id="582" name="ddod" ownerid="10" isBranch="true" permission="1"/>
              </user>;
            </users>;

            [Bindable]
            public var open:Object = new Object();
                       
            [Bindable]
            public var myData:XMLListCollection;
           
            [Bindable]
            public var myData2:XMLListCollection
           
            public var secondDP:Boolean=false;
           
            private var refreshData:Boolean = false;

            private function init():void
            {
               
                myData=new XMLListCollection(xdata.user);
                myData2=myData;
            }
            private function changeProvider():void
            {
                open=tree.openItems;
                secondDP=!secondDP;
                if (secondDP)
                {
                    tree.dataProvider=myData
                }
                else
                {
                    tree.dataProvider=myData2
                   
                }
            }
            private function renderTree():void
            {
                if (refreshData)
                {
                    refreshData=false;
                    tree.invalidateList();
                    tree.openItems = open;
                    tree.validateNow();
                }
            }
        ]]>   
    </mx:Script>
        <mx:Tree  id="tree" dataProvider="{myData}" render="renderTree()" width="400" height="300" borderThickness="0" paddingLeft="16" rowHeight="28"
            itemRenderer="{new ClassFactory(TaggedMapTreeItemRenderer)}" labelField="@name"
            minHeight="0"/>
        <mx:Button label="Change Data Provider" click="changeProvider()"/>
</mx:Application>
[/code]

--
Pavel.

kuril

unread,
Nov 11, 2009, 10:23:12 AM11/11/09
to ruFlex

> При смене датапровайдера открытые папки не
> восстанавливаются. Что я не так делаю?

обработчик события render тут совершенно никчему, к тому же непонятно,
когда свойство refreshData принимает значение true, и зачем нужно
свойство myData2, которое ссылается на myData.

Shaman

unread,
Nov 11, 2009, 10:40:24 AM11/11/09
to ruf...@googlegroups.com
обработчик события render тут совершенно никчему, к тому же непонятно,
когда свойство refreshData принимает значение true, и зачем нужно
свойство myData2, которое ссылается на myData.
Все это нужно для эмуляции смены датапровайдера. После смены датапровайдера должно происходить восстановление открытых веток.
--
Pavel.

kuril

unread,
Nov 11, 2009, 11:03:00 AM11/11/09
to ruFlex


> Все это нужно для эмуляции смены датапровайдера. После смены датапровайдера
> должно происходить восстановление открытых веток.

openItems ссылается на data открытых веток а не на itemRenderer, но в
новом датапровайдере может и не быть старой data, поэтому такая
открытая ветка восстановиться никак не может. В вашем случае
датапровайдер один и тот же, только переменные разные, а
tree.openItems = open; происходит при условии refreshData == true, так
вот непонятно, когда это условие наступает, и почему нельзя задать
openItems там же где задается новый датапровайдер?

Shaman

unread,
Nov 11, 2009, 11:11:11 AM11/11/09
to ruf...@googlegroups.com
Вы можете модифицировать приведенный код, так чтобы это действительно работало?

--
Pavel.

kuril

unread,
Nov 12, 2009, 2:54:50 AM11/12/09
to ruFlex

> Вы можете модифицировать приведенный код, так чтобы это действительно
> работало?

> private function changeProvider():void
> {
> open=tree.openItems;
> secondDP=!secondDP;
> if (secondDP)
> {
> tree.dataProvider=myData
> }
> else
> {
> tree.dataProvider=myData2
>
> }
> tree.openItems = open;
> }

> ]]>
> </mx:Script>
> <mx:Tree id="tree" dataProvider="{myData}"

Shaman

unread,
Nov 12, 2009, 6:07:08 AM11/12/09
to ruf...@googlegroups.com
Спасибо, kuril !
--
Pavel.
Reply all
Reply to author
Forward
0 new messages