读书人

tree.selectedItem如此诡异解决方案

发布时间: 2012-02-08 19:52:21 作者: rapoo

tree.selectedItem如此诡异

JScript code
if(alarmUserGroups.length>0){        var userGroup:Object = alarmUserGroups.getItemAt(0);//这里的userGroup不为空            alarmUserGroupTree.selectedItem = userGroup;    //赋值后,alarmUserGroupTree.selectedItem竟然为null    alarmUserGroupTree.dispatchEvent(new ListEvent(ListEvent.CHANGE));}


请问这是怎么回事啊?

[解决办法]
出现Null值是由于你的局部变量和类变量同名的缘故。另外你的设计有问题,不应该频繁更改dataProvider ,而是只需更改ArrayCollection的Source即可。代码如下:
XML code
<?xml version="1.0" encoding="utf-8"?><mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()" layout="absolute" paddingBottom="0" verticalAlign="top"><mx:Script>        <![CDATA[            import mx.events.IndexChangedEvent;            import mx.collections.ArrayCollection;            private var i:int = 0;            private var mail:Array = [{"label":"AA"},{"label":"BB"},{"label":"CC"}];            private var mess:Array = [{"label":"DD"},{"label":"EE"},{"label":"FF"}];            [Bindable]            private var datas:ArrayCollection = new ArrayCollection();                              private function initTree():void             {                 datas.source = mail;;                myTree.selectedIndex = 0;             }                         private function tabChange(event:IndexChangedEvent):void            {                switch(myTab.selectedIndex)                {                    case 0:                    {                        if(i==0)                        {                            this.datas.source = mail;                            this.datas.refresh();                            myTree.selectedItem = this.datas.getItemAt(0);                            i = 1;                        }                        else                        {                            this.datas.source = mess;                            this.datas.refresh();                            myTree.selectedItem = this.datas.getItemAt(0);                            i = 0;                        }                    }                    case 1:                    {                                    }                }             }                               ]]>    </mx:Script>    <mx:Panel width="100%" height="100%">        <mx:TabNavigator id="myTab" change="tabChange(event)" width="100%" height="100%" creationPolicy="all">            <mx:Canvas width="100%" height="100%">                      <mx:Tree id="myTree" labelField="label" width="100%" height="100%" dataProvider="{datas}" creationComplete="initTree()"/>                        </mx:Canvas>             <mx:Canvas width="100%" height="100%">             </mx:Canvas>        </mx:TabNavigator>    </mx:Panel>  </mx:WindowedApplication> 

读书人网 >flex

热点推荐