posts - 15,  comments - 8,  trackbacks - 0

          在Flex缺省的Tree組件中,如果要打開某個節(jié)點的話,點擊節(jié)點本身是不好用的,只能點擊節(jié)點前面的那個很小的“三角符號”,這種用戶體驗其實是很糟糕的。不過我們可以通過Tree 中的 itemClick 事件來自己實現(xiàn)這個事情。

          假設我們有一個Tree,它的id=”tree”,定義一個它的itemClick事件處理函數 itemClickHandler:

          private function tree_itemClick(evt:ListEvent):void {
               var item:Object 
          = Tree(evt.currentTarget).selectedItem;
              
          if (tree.dataDescriptor.isBranch(item)) {
                    tree.expandItem(item, 
          !tree.isItemOpen(item), true);
               }
          }


          代碼很簡單,就是先獲取到當前點擊的節(jié)點,判定它是否是一個枝節(jié)點,然后將它的打開狀態(tài)更改。

          最后在Tree中設置 itemClick=”itemClickHandler(event)” 就OK了。

          main.mxml(英文鏈接地址:http://blog.flexexamples.com/2008/04/05/opening-branches-by-clicking-rows-in-a-tree-control-in-flex/)

          <?xml version="1.0" encoding="utf-8"?>
          <!-- http://blog.flexexamples.com/2008/04/05/opening-branches-by-clicking-rows-in-a-tree-control-in-flex/ -->
          <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                  layout
          ="vertical"
                  verticalAlign
          ="middle"
                  backgroundColor
          ="white" viewSourceURL="srcview/index.html">

              
          <mx:Script>
                  
          <![CDATA[
                      
          import mx.collections.ICollectionView;
                      
          import mx.events.ListEvent;

                      
          private function tree_itemClick(evt:ListEvent):void {
                          var item:Object 
          = Tree(evt.currentTarget).selectedItem;
                          
          if (tree.dataDescriptor.isBranch(item)) {
                              tree.expandItem(item, 
          !tree.isItemOpen(item), true);
                          }
                      }

                      
          private function tree_labelFunc(item:XML):String {
                          var children:ICollectionView;
                          var suffix:String 
          = "";
                          
          if (tree.dataDescriptor.isBranch(item)) {
                              children 
          = tree.dataDescriptor.getChildren(item);
                              suffix 
          = " (" + children.length + ")";
                          }
                          
          return item[tree.labelField] + suffix;
                      }
                  ]]
          >
              
          </mx:Script>

              
          <mx:XML id="dp">
                  
          <root>
                      
          <folder label="One">
                          
          <folder label="One.A">
                              
          <item label="One.A.1" />
                              
          <item label="One.A.2" />
                              
          <item label="One.A.3" />
                              
          <item label="One.A.4" />
                              
          <item label="One.A.5" />
                          
          </folder>
                          
          <item label="One.1" />
                          
          <item label="One.2" />
                      
          </folder>
                      
          <folder label="Two">
                          
          <item label="Two.1" />
                          
          <folder label="Two.A">
                              
          <item label="Two.A.1" />
                              
          <item label="Two.A.2" />
                          
          </folder>
                      
          </folder>
                  
          </root>
              
          </mx:XML>

              
          <mx:Tree id="tree"
                      dataProvider
          ="{dp}"
                      showRoot
          ="false"
                      labelField
          ="@label"
                      labelFunction
          ="tree_labelFunc"
                      width
          ="300"
                      rowCount
          ="6"
                      itemClick
          ="tree_itemClick(event);" />
              
          </mx:Application>
          posted on 2008-09-02 19:27 lvq810 閱讀(1330) 評論(0)  編輯  收藏 所屬分類: Open Framekwork
          主站蜘蛛池模板: 都兰县| 庆阳市| 陇西县| 鄯善县| 贵溪市| 潢川县| 左云县| 遵义县| 北海市| 广昌县| 富顺县| 浑源县| 山西省| 四平市| 无锡市| 永仁县| 互助| 阳山县| 洱源县| 松滋市| 卫辉市| 滕州市| 梧州市| 三门县| 拜泉县| 敖汉旗| 渭源县| 玉林市| 清苑县| 旺苍县| 永宁县| 黑龙江省| 河东区| 乐至县| 缙云县| 定南县| 永宁县| 财经| 大连市| 永泰县| 郸城县|