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

flex datagrid 嵌checkbox实现全选与数据存储(非绑定数据源)

发布时间:2020-12-15 01:07:48 所属栏目:百科 来源:网络整理
导读:?http://fogiguiuu.iteye.com/blog/591106 ? 重写了DataGrid,主要是为了得到DataGrid的listItems属性,listItems保存了当前现显示的每一行的信息,还用了个ArrayCollection保存被选中了行的信息。 MyDataGrid.as Java代码 ? package ?flex.components.check

?http://fogiguiuu.iteye.com/blog/591106

?

重写了DataGrid,主要是为了得到DataGrid的listItems属性,listItems保存了当前现显示的每一行的信息,还用了个ArrayCollection保存被选中了行的信息。

MyDataGrid.as

Java代码

?

  1. package?flex.components.checkdatagrid ??
  2. { ??
  3. ????import?mx.collections.ArrayCollection; ??
  4. ????import?mx.controls.Alert; ??
  5. ????import?mx.controls.DataGrid; ??
  6. ???? ??
  7. ????public?class?MyDataGrid?extends?DataGrid ??
  8. ????{ ??
  9. ????????protected?var?arrColl:ArrayCollection?=?null;??//保存被选中的信息 ??
  10. ???????? ??
  11. ????????public?function?MyDataGrid() ??
  12. ????????{ ??
  13. ????????????super(); ??
  14. ????????????arrColl?=?new?ArrayCollection(); ??
  15. ????????} ??
  16. ???????? ??
  17. ????????????????//方法名不该取这个的 ??
  18. ????????public?function?get?listRendererArray():Array{?? ??
  19. ????????????return?listItems; ??
  20. ????????} ??
  21. ???????? ??
  22. ????????//add ??
  23. ????????public?function?addToSelected(item:Object):void{ ??
  24. ???????????? ??
  25. ????????????if(arrColl.getItemIndex(item)<0) ??
  26. ????????????{ ??
  27. ????????????????arrColl.addItem(item); ??
  28. ????????????} ??
  29. ????????} ??
  30. ???????? ??
  31. ????????//del ??
  32. ????????public?function?delFromSelected(item:Object):void{ ??
  33. ???????????? ??
  34. ????????????if(arrColl.getItemIndex(item)>-1) ??
  35. ????????????{ ??
  36. ????????????????arrColl.removeItemAt(arrColl.getItemIndex(item)); ??
  37. ????????????} ??
  38. ????????} ??
  39. ???????? ??
  40. ????????//isIn ??
  41. ????????public?function?isInSelected(item:Object):Boolean{ ??
  42. ???????????? ??
  43. ????????????if(arrColl.getItemIndex(item)<0) ??
  44. ????????????{ ??
  45. ????????????????return?false; ??
  46. ????????????} ??
  47. ????????????else??
  48. ????????????{ ??
  49. ????????????????return?true; ??
  50. ????????????} ??
  51. ????????} ??
  52. ???????? ??
  53. ????????public?function?getSelected():ArrayCollection{ ??
  54. ????????????return?arrColl; ??
  55. ????????} ??
  56. ????} ??
  57. }??
?

CheckHeadBoxIR.as? 实现全选用的checkbox

Java代码

?

  1. package?flex.components.checkdatagrid ??
  2. { ??
  3. ????import?flash.display.DisplayObject; ??
  4. ????import?flash.events.Event; ??
  5. ????import?flash.text.TextField; ??
  6. ???? ??
  7. ????import?mx.controls.CheckBox; ??
  8. ????import?mx.controls.DataGrid; ??
  9. ????import?mx.events.DataGridEvent; ??
  10. ??
  11. ????public?class?CheckHeadBoxIR?extends?CheckBox ??
  12. ????{ ??
  13. ????????public?function?CheckHeadBoxIR(){ ??
  14. ????????????super(); ??
  15. ????????????this.addEventListener(Event.CHANGE,?cgHandler); ??
  16. ????????} ??
  17. ???????? ??
  18. ????????override?public?function?set?data(value:Object)?:?void{ ??
  19. ????????????//super.data?=?value;????//一定不要有这句 ??
  20. ????????????this.selected?=?false; ??
  21. ????????????DataGrid(listData.owner).addEventListener(DataGridEvent.HEADER_RELEASE,?sortEventHandler); ??
  22. ????????} ??
  23. ???????? ??
  24. ????????private?function?sortEventHandler(event:DataGridEvent):void{ ??
  25. ???????????? ??
  26. ????????????if(event.itemRenderer?==?this) ??
  27. ????????????{ ??
  28. ????????????????event.preventDefault(); ??
  29. ????????????} ??
  30. ????????} ??
  31. ???????? ??
  32. ????????//居中显示 ??
  33. ????????override?protected?function?updateDisplayList(w:Number,?h:Number)?:?void{ ??
  34. ????????????super.updateDisplayList(w,?h); ??
  35. ???????????? ??
  36. ????????????for(var?i:Number=0;?i<numChildren;?i++) ??
  37. ????????????{ ??
  38. ????????????????var?c:DisplayObject?=?getChildAt(i); ??
  39. ????????????????if(!(c?is?TextField)) ??
  40. ????????????????{ ??
  41. ????????????????????c.x?=?Math.round((w-c.width)/2); ??
  42. ????????????????????c.y?=?Math.round((h-c.height)/2); ??
  43. ????????????????} ??
  44. ????????????} ??
  45. ????????} ??
  46. ???????? ??
  47. ????????protected?function?cgHandler(event:Event):void{ ??
  48. ???????????? ??
  49. ????????????//得到DataGrid里的listItems ??
  50. ????????????var?listItems:Array?=??MyDataGrid(listData.owner).listRendererArray; ??
  51. ???????????? ??
  52. ????????????if(listItems.length>0) ??
  53. ????????????{ ??
  54. ????????????????for(var?i:Number=0;?i<listItems.length;?i++) ??
  55. ????????????????{ ??
  56. ????????????????????if(listItems[i].length>0) ??
  57. ????????????????????{ ??
  58. ????????????????????????if(listItems[i][0].selected?!=?this.selected) ??
  59. ????????????????????????{ ??
  60. ????????????????????????????listItems[i][0].selected?=?this.selected; ??
  61. ????????????????????????????listItems[i][0].dispatchEvent(new?Event(Event.CHANGE)); ??
  62. ????????????????????????} ??
  63. ????????????????????} ??
  64. ????????????????} ??
  65. ????????????} ??
  66. ????????????/*var?ii:Object?=?dataGrid.indexToItemRenderer(2).data;*/??
  67. ????????} ??
  68. ????} ??
  69. }??
?

CheckBoxIR.as

Java代码

?

  1. package?flex.components.checkdatagrid ??
  2. { ??
  3. ???? ??
  4. ????import?flash.display.DisplayObject; ??
  5. ????import?flash.events.Event; ??
  6. ????import?flash.text.TextField; ??
  7. ???? ??
  8. ????import?mx.collections.ArrayCollection; ??
  9. ????import?mx.controls.Alert; ??
  10. ????import?mx.controls.CheckBox; ??
  11. ???? ??
  12. ????public?class?CheckBoxIR?extends?CheckBox{ ??
  13. ???????? ??
  14. ????????public?function?CheckBoxIR(){ ??
  15. ????????????super(); ??
  16. ????????????this.addEventListener(Event.CHANGE,?cgHandler); ??
  17. ????????} ??
  18. ???????? ??
  19. ????????override?public?function?set?data(value:Object)?:?void{ ??
  20. ????????????super.data?=?value; ??
  21. ??
  22. ???????????? ??
  23. ????????????if(MyDataGrid(listData.owner).isInSelected(data.id)) ??
  24. ????????????{ ??
  25. ????????????????this.selected?=?true; ??
  26. ????????????} ??
  27. ????????????else??
  28. ????????????{ ??
  29. ????????????????this.selected?=?false; ??
  30. ????????????} ??
  31. ???????????? ??
  32. ????????//??Alert.show("int?set?data--"+data.@id); ??
  33. ????????} ??
  34. ???????? ??
  35. ???????? ??
  36. ????????//居中显示 ??
  37. ????????override?protected?function?updateDisplayList(w:Number,?h); ??
  38. ???????????? ??
  39. ????????????for(var?i:Number=0;?i<numChildren;?i++) ??
  40. ????????????{ ??
  41. ????????????????var?c:DisplayObject?=?getChildAt(i); ??
  42. ????????????????if(!(c?is?TextField)) ??
  43. ????????????????{ ??
  44. ????????????????????c.x?=?Math.round((w-c.width)/2); ??
  45. ????????????????????c.y?=?Math.round((h-c.height)/2); ??
  46. ????????????????} ??
  47. ????????????} ??
  48. ????????} ??
  49. ???????? ??
  50. ????????protected?function?cgHandler(event:Event):void{ ??
  51. ???? ??
  52. ????????????var?dg:MyDataGrid?=?MyDataGrid(listData.owner); ??
  53. ???????????? ??
  54. ????????????if(this.selected?==?true) ??
  55. ????????????{ ??
  56. ????????????????dg.addToSelected(data.id); ??
  57. ????????????} ??
  58. ????????????else??
  59. ????????????{ ??
  60. ????????????????dg.delFromSelected(data.id); ??
  61. ????????????} ??
  62. ????????} ??
  63. ??
  64. ????} ??
  65. }??

?

应用

Java代码

?

  1. <checkdatagrid:MyDataGrid?width="100%"?borderStyle="outset"?height="366"? ??
  2. ???????????????????????????????????id="orderInfo"?dataProvider="{data}"?> ??
  3. ????????????<checkdatagrid:columns> ??
  4. ????????????????<mx:DataGridColumn?headerRenderer=flex.components.checkdatagrid.CheckHeadBoxIR"?itemRenderer="flex.components.checkdatagrid.CheckBoxIR"?width="30"/> ??
  5. ????????????</checkdatagrid:columns> ??
  6. ????????</checkdatagrid:MyDataGrid>??
?

(编辑:李大同)

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

    推荐文章
      热点阅读