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 閱讀(1338) 評論(0)  編輯  收藏 所屬分類: Open Framekwork
          主站蜘蛛池模板: 陆河县| 桑植县| 河池市| 梨树县| 弥渡县| 平阳县| 洛宁县| 甘泉县| 大化| 金乡县| 辽阳县| 玉林市| 伽师县| 光泽县| 蒲城县| 高阳县| 尉氏县| 新疆| 阿巴嘎旗| 涪陵区| 寻甸| 延边| 阿尔山市| 阿图什市| 扶沟县| 昂仁县| 寻甸| 普兰县| 遂昌县| 滕州市| 于都县| 呼伦贝尔市| 称多县| 漯河市| 疏附县| 安泽县| 宝鸡市| 海原县| 龙川县| 新和县| 清水河县|