亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2774 | 回復(fù): 0
打印 上一主題 下一主題

帶搜索功能的下拉樹的實(shí)現(xiàn) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-10-31 17:39 |只看該作者 |倒序?yàn)g覽
帶搜索功能的下拉樹的實(shí)現(xiàn)




要做個(gè)下拉框帶樹結(jié)構(gòu)的控件。

找了幾個(gè)組件拼湊了個(gè)出來了。






Js代碼
  1. 1.<?xml version="1.0" encoding="utf-8"?>   
  2. 2.<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"  
  3. 3.               xmlns:s="library://ns.adobe.com/flex/spark"   
  4. 4.               xmlns:mx="library://ns.adobe.com/flex/mx"  
  5. 5.               creationComplete="init()"     
  6. 6.               width="400" height="300"  
  7. 7.               showStatusBar="false">   
  8. 8.    <fx:Script>   
  9. 9.        <![CDATA[   
  10. 10.            import flashx.textLayout.operations.CutOperation;   
  11. 11.            import flashx.textLayout.operations.DeleteTextOperation;   
  12. 12.            import flashx.textLayout.operations.FlowOperation;   
  13. 13.               
  14. 14.            import mx.collections.ArrayCollection;   
  15. 15.            import mx.collections.ArrayList;   
  16. 16.            import mx.collections.IList;   
  17. 17.            import mx.collections.XMLListCollection;   
  18. 18.            import mx.events.ListEvent;   
  19. 19.            import mx.utils.StringUtil;   
  20. 20.               
  21. 21.            import spark.events.TextOperationEvent;   
  22. 22.               
  23. 23.            [Bindable]   
  24. 24.            private var xm:XML =   
  25. 25.                <root>   
  26. 26.                        <league label="全公司" data="1234" isdep="true">   
  27. 27.                                <division label="開發(fā)" data="2234" isdep="true">   
  28. 28.                                        <team label="應(yīng)用" data="2234" isdep="true"/>   
  29. 29.                                        <team label="系統(tǒng)" data="1" isdep="true"/>   
  30. 30.                                        <team label="測試" data="234" isdep="true">   
  31. 31.                                                <team label="研發(fā)嗎" data="34" isdep="false"/>   
  32. 32.                                                <team label="研發(fā)里面" data="56" isdep="false"/>   
  33. 33.                                                <team label="研發(fā)里" data="153" isdep="false"/>   
  34. 34.                                        </team>   
  35. 35.                                        <team label="支撐" data="214" isdep="true"/>   
  36. 36.                                </division>   
  37. 37.                                <division label="銷售">   
  38. 38.                                        <team label="浙江" data="89" isdep="true"/>   
  39. 39.                                        <team label="cfdw" data="76" isdep="true"/>   
  40. 40.                                        <team label="江蘇" data="1255" isdep="true"/>   
  41. 41.                                        <team label="上海" data="164" isdep="true">   
  42. 42.                                                <team label="上海1" data="34" isdep="false"/>   
  43. 43.                                                <team label="上海12" data="56" isdep="false"/>   
  44. 44.                                                <team label="上海2" data="153" isdep="false"/>   
  45. 45.                                        </team>   
  46. 46.                                        <team label="Kansas" data="17834" isdep="false"/>   
  47. 47.                                </division>   
  48. 48.                                <division label="財(cái)務(wù)" data="1y4" isdep="true">   
  49. 49.                                        <team label="tobg" data="1gf4" isdep="false"/>   
  50. 50.                                        <team label="tyue" data="5" isdep="false"/>   
  51. 51.                                        <team label="Toronto" data="134" isdep="false"/>   
  52. 52.                                        <team label="tyar" data="4" isdep="false"/>   
  53. 53.                                        <team label="Tampa Bay" data="ui" isdep="false"/>   
  54. 54.                                </division>   
  55. 55.                                <division label="產(chǎn)品" data="734" isdep="true"/>   
  56. 56.                                <division label="cds" data="120" isdep="false"/>   
  57. 57.                        </league>   
  58. 58.                </root>   
  59. 59.            ;   
  60. 60.               
  61. 61.               
  62. 62.            [Bindable]   
  63. 63.            public var selectedNode:XML;   
  64. 64.               
  65. 65.            [Bindable]   
  66. 66.            private var a:XMLList = new XMLList();   
  67. 67.               
  68. 68.            [Bindable]   
  69. 69.            private var b:XMLListCollection = new XMLListCollection();   
  70. 70.           
  71. 71.            [Bindable]   
  72. 72.            private var c:ArrayCollection = new ArrayCollection();   
  73. 73.               
  74. 74.            [Bindable]   
  75. 75.            private var bp:ArrayCollection = new ArrayCollection();   
  76. 76.               
  77. 77.            private function init():void  
  78. 78.            {   
  79. 79.                a = xm.league;   
  80. 80.                b = new XMLListCollection(a);   
  81. 81.                c = new ArrayCollection(b.toArray());   
  82. 82.  
  83. 83.                this.addEventListener(MouseEvent.MOUSE_DOWN, focusOut);   
  84. 84.            }   
  85. 85.               
  86. 86.            private function focusOut(event:MouseEvent):void  
  87. 87.            {   
  88. 88.                if(event.currentTarget.id != 'treelist' && event.currentTarget.id != 'relist')   
  89. 89.                {   
  90. 90.                    result.displayPopUp = false;   
  91. 91.                    frmPUA.displayPopUp = false;   
  92. 92.                }   
  93. 93.            }   
  94. 94.               
  95. 95.            protected function openBtn_clickHandler(event:MouseEvent):void  
  96. 96.            {   
  97. 97.//              if(result.displayPopUp || frmPUA.displayPopUp)   
  98. 98.//              {   
  99. 99.//                  result.displayPopUp = false;   
  100. 100.//                  frmPUA.displayPopUp = false;   
  101. 101.//              }else   
  102. 102.//              {   
  103. 103.                    frmPUA.displayPopUp = true;   
  104. 104.//              }   
  105. 105.            }   
  106. 106.               
  107. 107.            protected function textin_changeHandler(event:TextOperationEvent):void  
  108. 108.            {   
  109. 109.                var operation:FlowOperation = event.operation;   
  110. 110.  
  111. 111.                if (operation is DeleteTextOperation || operation is CutOperation)   
  112. 112.                {   
  113. 113.                    result.displayPopUp = false;   
  114. 114.                }   
  115. 115.                else   
  116. 116.                {   
  117. 117.                    if (result.displayPopUp = false)   
  118. 118.                    {   
  119. 119.                        result.displayPopUp = true;   
  120. 120.                        return;   
  121. 121.                    }      
  122. 122.  
  123. 123.                    var keyWord:String = StringUtil.trim(textin.text);     
  124. 124.                    if(keyWord!='')   
  125. 125.                    {   
  126. 126.                        searchKeyWord(keyWord);   
  127. 127.                    }   
  128. 128.                    else  
  129. 129.                    {   
  130. 130.                        result.displayPopUp =false;   
  131. 131.                    }   
  132. 132.                }   
  133. 133.            }   
  134. 134.               
  135. 135.            private function searchKeyWord(keyWord:String):void  
  136. 136.            {     
  137. 137.                bp.removeAll();   
  138. 138.                bp = filterData(c,keyWord);   
  139. 139.//              var typedLength:int = textin.text.length;   
  140. 140.//              var ob:XML = new XML();   
  141. 141.                if(bp.length > 0)   
  142. 142.                {     
  143. 143.//                  搜索時(shí)可以讓輸入框內(nèi)文字變化,見spark的combobox組件源碼   
  144. 144.//                  ob = bp[0] as XML;   
  145. 145.//                  var itemString:String = ob.@label;   
  146. 146.//                  textin.selectAll();   
  147. 147.//                  textin.insertText(itemString);   
  148. 148.//                  textin.selectRange(typedLength, itemString.length);   
  149. 149.                       
  150. 150.                    frmPUA.displayPopUp = false;   
  151. 151.                    result.displayPopUp = true;   
  152. 152.                       
  153. 153.                    textin.addEventListener(KeyboardEvent.KEY_UP, changeFocous);   
  154. 154.                }   
  155. 155.                else  
  156. 156.                {   
  157. 157.                    frmPUA.displayPopUp = false;   
  158. 158.                    result.displayPopUp = false;   
  159. 159.                    if(selectedNode)   
  160. 160.                    {   
  161. 161.                        textin.text = selectedNode.@label;   
  162. 162.                    }   
  163. 163.                    else  
  164. 164.                    {   
  165. 165.                        textin.text = '';   
  166. 166.                    }   
  167. 167.                }   
  168. 168.            }     
  169. 169.               
  170. 170.            private function changeFocous(event:KeyboardEvent):void  
  171. 171.            {     
  172. 172.                if(event.keyCode == 40 || event.keyCode == 13)   
  173. 173.                {   
  174. 174.                    relist.setFocus();   
  175. 175.                    relist.selectedIndex = 0;   
  176. 176.                }   
  177. 177.            }   
  178. 178.               
  179. 179.            private function filterData(ac:ArrayCollection, keyword:String):ArrayCollection   
  180. 180.            {     
  181. 181.                var xm:XML = ac[0] as XML;   
  182. 182.                find(xm, keyword);   
  183. 183.                return bp;   
  184. 184.            }   
  185. 185.               
  186. 186.            // 遞歸遍歷xml   
  187. 187.            private function find( node:XML, keyword:String ):void   
  188. 188.            {   
  189. 189.                for each ( var element:XML in node.elements( ) )   
  190. 190.                {   
  191. 191.                    var str:String = element.@label;   
  192. 192.                       
  193. 193.                    //區(qū)分大小寫時(shí) str.indexOf(keyword)   
  194. 194.                    //不區(qū)分大小寫 str.search(new RegExp(keyword,"gi")   
  195. 195.                    if(str.search(new RegExp(keyword,"gi")) != -1 )               
  196. 196.                    {     
  197. 197.//                      可以根據(jù)在xml標(biāo)簽里定義哪些可以被搜索   
  198. 198.//                      if(element.@isdep == 'false')   
  199. 199.//                      {   
  200. 200.                            var item:Object = element as Object;   
  201. 201.                              
  202. 202.                            if(str == keyword)//出現(xiàn)完全匹配但不在隊(duì)列前端的將其加到列表最前端   
  203. 203.                            {   
  204. 204.                                bp.addItemAt(item,0);   
  205. 205.                            }else  
  206. 206.                            {   
  207. 207.                                bp.addItem(item);   
  208. 208.                            }   
  209. 209.//                      }   
  210. 210.                    }     
  211. 211.                       
  212. 212.                    find( element,keyword );   
  213. 213.                }   
  214. 214.            }   
  215. 215.               
  216. 216.            private function listchange(e:ListEvent):void  
  217. 217.            {   
  218. 218.                selectedNode = Tree(e.target).selectedItem as XML;   
  219. 219.                textin.text = selectedNode.@label;   
  220. 220.                frmPUA.displayPopUp = false;   
  221. 221.            }   
  222. 222.  
  223. 223.               
  224. 224.            protected function relist_clickHandler(event:MouseEvent):void  
  225. 225.            {   
  226. 226.                selectedNode = relist.selectedItem as XML;   
  227. 227.                textin.text = selectedNode.@label;   
  228. 228.                result.displayPopUp = false;   
  229. 229.            }   
  230. 230.               
  231. 231.            protected function relist_keyUpHandler(event:KeyboardEvent):void  
  232. 232.            {   
  233. 233.                if(event.keyCode == 13)   
  234. 234.                {   
  235. 235.                    selectedNode = relist.selectedItem as XML;   
  236. 236.                    textin.text = selectedNode.@label;   
  237. 237.                    result.displayPopUp = false;   
  238. 238.                }   
  239. 239.            }   
  240. 240.               
  241. 241.        ]]>   
  242. 242.    </fx:Script>   
  243. 243.      
  244. 244.    <fx:Declarations>   
  245. 245.        <mx:Tree  id="tree1" dataProvider="{c}"  width="150" labelField="@label"  
  246. 246.                  selectedIndex="0"  />      
  247. 247.    </fx:Declarations>   
  248. 248.  
  249. 249.      
  250. 250.    <s:Panel x="10" y="10" width="90%" height="90%" title="My ComBoTree Selector Example">           
  251. 251.      
  252. 252.            <s:Group id="vg" x="10" y="10">   
  253. 253.               
  254. 254.                <s:TextInput x="0" y="0" width="130" height="20" id="textin" change="textin_changeHandler(event)"/>   
  255. 255.                <s:Button x="130" y="0" id="openBtn" width="20" height="20" label="O"   
  256. 256.                          click="openBtn_clickHandler(event)"/>   
  257. 257.                  
  258. 258.                <s:PopUpAnchor id="frmPUA" x="0" y="20" popUpWidthMatchesAnchorWidth="true"     
  259. 259.                               popUpPosition="topLeft" width="150" height="200">   
  260. 260.                       
  261. 261.                    <mx:Tree  id="treelist" dataProvider="{c}" maxHeight="200" labelField="@label"  
  262. 262.                              selectedIndex="0" change="listchange(event)"/>      
  263. 263.                </s:PopUpAnchor>      
  264. 264.                <s:PopUpAnchor id="result" x="0" y="20" popUpWidthMatchesAnchorWidth="true"   
  265. 265.                               popUpPosition="topLeft" width="150" height="200">   
  266. 266.                       
  267. 267.                    <s:List  id="relist" dataProvider="{bp}" height="100%" width="100%"  maxHeight="200"  
  268. 268.                             labelField="@label" selectedIndex="-1" keyUp="relist_keyUpHandler(event)"  
  269. 269.                             click="relist_clickHandler(event)"/>      
  270. 270.                </s:PopUpAnchor>   
  271. 271.            </s:Group>   
  272. 272.               
  273. 273.               
  274. 274.               
  275. 275.            <!--<mx:PopUpButton width="150" popUp="{tree1}" label="{tree1.selectedItem.@label}"/> -->   
  276. 276.           
  277. 277.    </s:Panel>      
  278. 278.      
  279. 279.</s:WindowedApplication>  
復(fù)制代碼
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP