<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我的漫漫程序之旅

    專注于JavaWeb開發
    隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
    數據加載中……

    Flex 基于數據源的Menu Tree

    實現功能:
    1.由外部參數flashvars指定數據源的文件位置或render鏈接.
    2.在源數據上加href和target屬性來控制打開窗口.
    3.可自定義父節點和子節點圖標,不設置采用系統默認
    .

    直接上源碼:
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
         fontFamily
    ="simsun" fontSize="12" 
         layout
    ="absolute" creationComplete="menu.send();" width="242" height="442" initialize="init()">
    <mx:Script>
        
    <![CDATA[
            
    import mx.controls.Alert;
            
    import mx.events.ListEvent;
             
    import mx.collections.ArrayCollection;
             
    import mx.rpc.events.ResultEvent;

             [Bindable]
             
    private var strUrl:String = "TreeMenus.xml";
             
             [Bindable]
             
    private var menus:XML;
             
             [Bindable]
             [Embed(
    "open.gif")]
             
    public var openicon:Class;
             
              [Bindable]
              [Embed(
    "close.gif")]
             
    public var closeicon:Class;
             
              [Bindable]
              [Embed(
    "leaf.gif")]
             
    public var leaficon:Class;
             
             
    private function init():void
             
    {
                  
    this.strUrl = this.parameters.url;
             }

             
             
    private function LoadMenu(event:ResultEvent):void
             
    {
                 menus 
    = XML(event.result);
                 var results:XMLList 
    = menus.node;
                 tree1.dataProvider 
    = results;
             }

             
    //菜單圖標設置
             private function treeIcon(item:Object):Class
             
    {
                 
                  var node:XML 
    = XML(item);
                  trace(
    'icon:' + node.@icon);
                  var str : String 
    = node.@icon;
                  
    //已經設置圖標
                  if(node.hasOwnProperty("@icon"))
                  
    {
                      
    if(node.@icon == 'openicon')
                      
    {
                            
    return openicon;
                      }

                      
    if(node.@icon == 'closeicon')
                      
    {
                            
    return closeicon;
                      }

                      
    if(node.@icon == 'leaficon')
                      
    {
                            
    return leaficon;
                      }

                  }

                  
    else
                  
    {
                    
    //如果沒定義icon就直接用默認的                       
                      if(!tree1.dataDescriptor.isBranch(item))
                      
    {
                          
    return tree1.getStyle("defaultLeafIcon");
                    }

                    
    if(tree1.isItemOpen(item))
                    
    {
                          
    return tree1.getStyle("folderOpenIcon");
                    }

                    
    else
                    
    {
                        
    return tree1.getStyle("folderClosedIcon");
                    }

                  }

                  
    return null;
            }

            
             
    /**
             * 菜單樹單項點擊事件
             * 
    */

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

                    
    else
                    
    {
                        
    //得到節點對象
                        var node:XML = XML(item);
                        
    //如果有屬性href
                        if(node.hasOwnProperty("@href"&& node.hasOwnProperty("@target"))
                        
    {
                            openURL(node.@href,node.@target);
                        }

                        
    if(node.hasOwnProperty("@href"&& (node.hasOwnProperty("@target"== false))
                        
    {
                            
    //沒有指定target默認在新窗口中打開
                            openURL(node.@href,"_blank");
                        }

                    }

              }

                 
             
    //頁面跳轉的方法 
              private function openURL(url:String ,target:String):void
              
    {
                 var request:URLRequest 
    = new URLRequest(url); 
                 navigateToURL(request,target);
              }

        ]]
    >
    </mx:Script>
        
    <mx:HTTPService url="{strUrl}" id="menu" useProxy="false" 
             showBusyCursor
    ="true" result="LoadMenu(event)" resultFormat="xml"/>
        
    <mx:Tree iconFunction="treeIcon" id="tree1" width="100%" height="100%" labelField="@label"  itemClick="itemClickHandler(event)"/>
    </mx:Application>

    調用的時候在flashvars里面加上url=xxx
    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
                id
    ="tree" width="242" height="442"
                codebase
    ="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
                
    <param name="movie" value="${ctx}/js/as/menu.swf" />
                
    <param name="quality" value="high" />
                
    <param name="bgcolor" value="#869ca7" />
                
    <param name="allowScriptAccess" value="sameDomain" />
                
    <!-- 指定菜單的數據源 -->
                
    <param name="flashvars" value="url=${ctx}/user/user!renderMenu.do?id=${user.usid}" />
                
    <embed src="tree.swf" quality="high" bgcolor="#869ca7"
                    width
    ="242" height="442" name="tree" align="middle"
                    play
    ="true"
                    loop
    ="false"
                    quality
    ="high"
                    allowScriptAccess
    ="sameDomain"
                    type
    ="application/x-shockwave-flash"
                    pluginspage
    ="http://www.adobe.com/go/getflashplayer">
                
    </embed>
        
    </object>
    其中url可以指定xml文件的位置或者render的鏈接
    示例文件xml:
    <?xml version='1.0' encoding='utf-8'?>
    <menus>
        
    <node label='系統管理' icon="openicon">
            
    <node label='用戶管理' icon="closeicon"
                href
    ='/main/user/user-list.jsp' target='mainFrame' />
            
    <node label='權限管理' href='/main/user/action-list.jsp'
                
    target='mainFrame' />
            
    <node label='角色管理' href='/main/user/role-list.jsp'
                
    target='mainFrame' />
            
    <node label='域管理' href='/main/user/user-list.jsp'
                
    target='mainFrame' />
            
    <node label='測試'>
                
    <node label='sub folder' href='' target='mainFrame' />
            
    </node>
        
    </node>
        
    <node label='客服'>
            
    <node label='終端信息查詢' href='' target='mainFrame' />
            
    <node label='客服問題-解答記錄' href='' target='mainFrame' />
        
    </node>
    </menus>

    源碼下載

    posted on 2009-05-07 17:34 々上善若水々 閱讀(2339) 評論(2)  編輯  收藏

    評論

    # re: Flex 基于數據源的Menu Tree  回復  更多評論   

    2009-05-08 10:19 | 張氏兄弟

    # re: Flex 基于數據源的Menu Tree  回復  更多評論   

    請問一下,這里的Object聲明部分應該加在哪里?什么文件的里面?

    還有“調用的時候在flashvars里面加上url=xxx”是什么意思? <param name="flashvars url=xxx" value="url=${ctx}/user/user!renderMenu.do?id=${user.usid}" /> 這樣嗎?

    2011-03-21 21:45 | xyza

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 二级毛片免费观看全程| 在线观看www日本免费网站| 亚洲成A人片在线观看WWW| 亚洲毛片免费视频| 亚洲av日韩精品久久久久久a| 91麻豆精品国产自产在线观看亚洲| 最近2022中文字幕免费视频 | 美女免费精品高清毛片在线视| caoporm超免费公开视频| 亚洲视频手机在线| 亚洲乱码一区二区三区在线观看| 99久久免费看国产精品| 国产成人亚洲精品影院| 亚洲综合国产成人丁香五月激情| 国产精品青草视频免费播放| 免费福利网站在线观看| 亚洲va久久久噜噜噜久久狠狠 | 亚洲另类自拍丝袜第五页| 国产中文字幕免费| 午夜男人一级毛片免费| 一区二区无码免费视频网站| 亚洲视频免费播放| 精品四虎免费观看国产高清午夜| 国产精品午夜免费观看网站| 免费福利在线观看| 黄色网址在线免费观看| 国产亚洲精品国产福利在线观看| 亚洲AV成人片无码网站| 亚洲av无码专区在线电影天堂 | 在线看片v免费观看视频777| 最近2019中文字幕免费直播| 最近中文字幕完整免费视频ww | 亚洲香蕉在线观看| 亚洲va久久久久| 亚洲熟妇无码av另类vr影视| 亚洲天然素人无码专区| 丰满亚洲大尺度无码无码专线| 亚洲AV永久无码精品网站在线观看| 亚洲国产av玩弄放荡人妇| 亚洲国产成人久久精品大牛影视| 性色av极品无码专区亚洲|