<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 々上善若水々 閱讀(2329) 評論(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

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


    網站導航:
     
    主站蜘蛛池模板: 在线精品亚洲一区二区小说| 在线观看免费人成视频色| 国产嫩草影院精品免费网址| 亚洲午夜一区二区三区| 1000部拍拍拍18免费网站| 亚洲欧洲久久精品| 97国产免费全部免费观看| 亚洲午夜久久久精品电影院| 2019中文字幕在线电影免费| 亚洲欧洲精品国产区| 亚欧在线精品免费观看一区| 亚洲国产精品日韩在线观看| 丁香花免费完整高清观看| 亚洲最大av资源站无码av网址| 好男人视频在线观看免费看片| 亚洲GV天堂无码男同在线观看| 国产人妖ts在线观看免费视频| 免费精品国产自产拍在线观看| 中文字幕久久亚洲一区 | 久久久久久A亚洲欧洲AV冫| 黄色视屏在线免费播放| 亚洲人成网亚洲欧洲无码久久| 无码国产精品一区二区免费16| 亚洲精品亚洲人成在线观看麻豆 | 中文字幕在线观看免费| 亚洲精品狼友在线播放| 亚洲日本在线免费观看| 亚洲区日韩精品中文字幕| 亚洲国产成人久久综合区| 老司机69精品成免费视频| 亚洲午夜精品国产电影在线观看| 日本牲交大片免费观看| 青青青视频免费观看| 亚洲电影国产一区| 啦啦啦手机完整免费高清观看 | 免费国产成人α片| 亚洲kkk4444在线观看| 亚洲午夜精品第一区二区8050| 日韩免费无码一区二区三区| 亚洲av无码av在线播放| 国产亚洲3p无码一区二区|