posts - 15,  comments - 8,  trackbacks - 0

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

          假設我們有一個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);
               }
          }


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

          最后在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
          主站蜘蛛池模板: 房山区| 宁晋县| 台江县| 安溪县| 康乐县| 屏山县| 天气| 浙江省| 德兴市| 城口县| 南岸区| 芦山县| 遂平县| 乐昌市| 武汉市| 安化县| 弋阳县| 黄骅市| 海原县| 武定县| 临颍县| 长汀县| 康保县| 隆子县| 绥芬河市| 太原市| 梓潼县| 邮箱| 郯城县| 榆林市| 龙泉市| 砚山县| 宁河县| 怀远县| 鄢陵县| 峨眉山市| 隆子县| 镇原县| 喀什市| 西贡区| 阿坝|