加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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,以致重新刷新视图的选择状态;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读