Another workaround is to call tree1.validateNow() before setting the
selectedIndex as adviced here in workaround notes:

https://bugs.adobe.com/jira/browse/SDK-11424

Workaround (if any):
Call List.validateNow() after changing the data provider but before
setting the selected index.



2008/4/25 Andriy Panas <[EMAIL PROTECTED]>:
> Hi Flexcoders,
>
>  I am on Flex 2.0.1 SDK.
>
>  My use case is as follows:
>
>  1) At the start of the application, I set dataproviders of
>  XMLListCollection type to 2 different UI controls on stage (<mx:Tree>
>  and <mx:List>) and then I set  immediately selectedIndexes to 0.
>
>  It works all right for both controls.
>
>  2) Then I switch dataproviders at the runtime for both UI controls by
>  pressing the button and then I set immediately selectedIndexes to 0
>  again.
>
>  <mx:List> displays the selection correctly, while <mx:Tree> does not.
>
>  My current workaround is to set myTree.selectedIndex = 0 within
>  "callLater" call or within FlexEvent.UPDATE_COMPLETE event listener
>  for mx:Tree.
>
>
>  My test file is quite simple:
>  -------------------
>  <mx:Application
>         xmlns:mx="http://www.adobe.com/2006/mxml";
>         initialize="onInitialize()">
>         <mx:Script>
>                 <![CDATA[
>
>                         private function onInitialize() : void {
>                                 tree1.dataProvider = capitals;
>                                 list2.dataProvider = capitalColl;
>                                 setSelectedIndexes();
>                         }
>
>                         private function changeDP() : void {
>                                 tree1.dataProvider = capitals2;
>                                 list2.dataProvider = capitalCol2;
>
>                                 setSelectedIndexes();
>                                 //callLater(setSelectedIndexes)
>                         }
>
>                         private function setSelectedIndexes() : void {
>                                 tree1.selectedIndex = 0;
>                                 list2.selectedIndex = 0;
>                         }
>                 ]]>
>         </mx:Script>
>         <mx:XML id="capitals">
>         <root>
>             <Capitals label="U.S. State Capitals">
>             </Capitals>
>             <Capitals label="Canadian Province Capitals">
>             </Capitals>
>         </root>
>     </mx:XML>
>
>     <mx:XML id="capitals2">
>         <root>
>             <Capitals label="U.S. State Capitals-2">
>             </Capitals>
>             <Capitals label="Canadian Province Capitals-2">
>             </Capitals>
>         </root>
>     </mx:XML>
>     <!-- Create an XMLListCollection representing the Tree nodes.
>             capitals.Capitals is an XMLList with both Capitals elements. -->
>     <mx:XMLListCollection id="capitalColl" source="{capitals.Capitals}"/>
>         <mx:XMLListCollection id="capitalCol2" source="{capitals2.Capitals}"/>
>     <mx:Tree id="tree1"
>         labelField="@label"
>                 showRoot="false"
>                 width="300"/>
>     <!-- The XMLListCollection does not include the XML root. -->
>     <mx:List id="list2"
>         labelField="@label"
>         width="300"/>
>
>     <mx:Button id="btn1" label="Change data provider" click="changeDP()">
>
>     </mx:Button>
>  </mx:Application>
>  -------------------
>
>  --
>  Med venlig hilsen / Best regards
>  Andriy Panas
>  [EMAIL PROTECTED]
>



-- 
--
Med venlig hilsen / Best regards
Andriy Panas
[EMAIL PROTECTED]

Reply via email to