ctrl a实现Flex中DataGrid或List的全选功能
发布时间:2020-12-15 01:01:45 所属栏目:百科 来源:网络整理
导读:很多时候我们都会遇到这样的situation:明明很简单的一件事情(自认为),当我们真真动手来做的时候,但发现事情进行起来却并不是那么的一帆风顺。 我们必须牢记: 不要小瞧一件任何简单的事情,表面的现象很可能反映事物的本质; 遇到困难时不要慌,坚持坚持
很多时候我们都会遇到这样的situation:明明很简单的一件事情(自认为),当我们真真动手来做的时候,但发现事情进行起来却并不是那么的一帆风顺。
我们必须牢记: 不要小瞧一件任何简单的事情,表面的现象很可能反映事物的本质; 遇到困难时不要慌,坚持坚持,相信明天会更好! 项目中客户提出要用ctrl a 实现DataGrid的全选功能,开始我以为是一件so easy的事情,但不幸的是,这个原本我以为只需要5分钟的task,却整整花费了我大半天。 我起初的想法是直接用DataGrid的dataProvider赋值给他的selectedItems,但后来事与愿违; 经过很痛苦的一番尝试后终于找到了问题的根源. 先说解决方案: private function keyborderUpHandler(event:KeyboardEvent):void { if(event.ctrlKey && event.keyCode == 65){ var temp:ArrayCollection = this.dataProvider as ArrayCollection; if(temp){ //需要重新new 所选数组 var seItems:Array = []; for(var i:int=0;i<temp.length;i++){ seItems.push(temp[i]); } this.selectedItems = seItems; } } }原因分析:重新实例化数组才会触发 set selectedItems() 进行重新validate,以致重新刷新视图的选择状态; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |