`
chenxueyong
  • 浏览: 342315 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

ext异步树加入子节点事件

阅读更多

ext
ext异步树加入子节点事件
----------------------------------------------------------------------------------------------
public class SysMenuAction extends BaseAction {

    private static final Log log = LogFactory.getLog(SysMenuAction.class);

    private SysMenuManager sysMenuManager;

    /**
    * 如果parentMenuId参数不为空,就返加所有子菜单
    *
    * @param mapping
    * @param form
    * @param request
    * @param response
    * @return
    * @throws Exception
    */
    @SuppressWarnings("unchecked")
    public ActionForward getSysMenus(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        // 是否有权限
        // TODO Auto-generated method stub
        // 初始化编码方式和输出流
        response.setContentType("text/json; charset=utf-8");
        PrintWriter out = null;
        try {
            out = response.getWriter();
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 返回的结果
        Map<String, Object> result = new HashMap<String, Object>();

        try {

            // 取得参数

            // TODO Auto-generated method stub
            String parentMenuId = request.getParameter("id");

            String state = request.getParameter("state");

            // 2、取回数据:如果parentMenuId参数不为空就返回parentOrgId下面的所有直接子机构,否则返回所有机构
            List<TSysMenu> list = null;

            if (state == null || state.length() == 0) {
                state = "0";
            }
            if (parentMenuId == null || parentMenuId.length() == 0
                    || parentMenuId.trim().equals("0")) {
                TSysMenu obj = sysMenuManager.findSysMenuByTreeCode("0001");
                parentMenuId = obj.getMenuId();
            }
            list = sysMenuManager.findChildrenSysMenus(state, parentMenuId);

            // 转换成JSON格式
            // 不要转换成对象,要转换成数组
            JSONArray jsonArray = new JSONArray();
            for (TSysMenu menu : list) {
                Map map = new HashMap();

                map.put("id", menu.getMenuId());
                map.put("text", menu.getMenuName());
                map.put("href", menu.getMenuUrl());
               
                if (menu.getIsLeaf().equals("1")) {
                    map.put("leaf", true);
                } else {
                    map.put("leaf", false);

                }

                jsonArray.add(map);
            }

            // 输出到列表

            out.print(jsonArray);
            return null;

            //
        } catch (Exception e) {

            log.info(e);
            result.put("success", false);
            result.put("errors", e.toString());
        }

        return null;
    }

----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title>公司组织架构</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <link rel="stylesheet" type="text/css" href="../lib/ext/resources/css/ext-all.css" />
        <script type="text/javascript" src="../lib/ext/adapter/ext/ext-base.js">
        </script>
        <script type="text/javascript" src="../lib/ext/ext-all.js">
        </script>
    </head>
    <script>
        var menuUrl = 'http://localhost:8080/XX_BPM_JSP/sysMenus.bpm?method=getSysMenus';
       
        Ext.onReady(function(){
            //
           
            //右边具体功能面板区  
            var contentPanel = new Ext.TabPanel({
                region: 'center',
                enableTabScroll: true,
                activeTab: 0,
                items: [{
                    id: 'homePage',
                    title: '信息列表',
                    autoScroll: true,
                    html: '<div style="position:absolute;color:#ff0000;top:40%;left:40%;">信息列表</div>'
                }]
            });
            //北边,标题栏
            var north_item = new Ext.Panel({
                title: '公司组织架构',
                region: 'north',
                contentEl: 'north-div',
                split: true,
                border: true,
                collapsible: true,
                height: 50,
                minSize: 50,
                maxSize: 120
            });
           
            //南边,状态栏
            var south_item = new Ext.Panel({
                title: '版权所有',
                region: 'south',
                contentEl: 'south-div',
                split: true,
                border: true,
                collapsible: true,
                height: 50,
                minSize: 50,
                maxSize: 120
            });
           
           
           
           
           
            //
           
           
            //中间的中间,功能菜单
            var grid_item = new Ext.Panel({
           
                region: 'west',
               
                el: 'center-center',
               
                title: '功能菜单',
               
               
                split: true,
               
                collapsible: true,
               
                titlebar: true,
               
               
               
                collapsedTitle: '内容',
                height: 200,
                width: 200,
                minSize: 100,
               
                maxSize: 400
           
           
            });
           
           
            //中间的南边,信息列表
            var center_south_item = new Ext.Panel({
           
           
                region: 'center',
               
                contentEl: 'center-south',
               
                title: '信息列表',
               
                split: true,
               
                collapsible: true,
               
                titlebar: true,
               
               
               
                collapsedTitle: '内容'
           
            });
            //中间
            var center_item = new Ext.Panel({
           
                region: 'center',
               
                layout: 'border',
               
                // items: [grid_item, center_south_item]
                items: [grid_item, contentPanel]
           
           
            });
            //
           
           
           
           
           
            //西边,后台管理
           
            var managerUrl = "http://www.google.com";
            var managerUrlName = "搜索";
            var west_item = new Ext.Panel({
           
                title: '后台管理',
                region: 'west',
                contentEl: 'west-div',
                split: true,
                border: true,
                collapsible: true,
                width: 200,
                minSize: 120,
                maxSize: 200,
                layout: "accordion",
               
                layoutConfig: {
               
                    animate: true
               
                },
               
                items: [{
                    title: "系统管理",
                    html: '<div id="tree"></div>'
               
               
               
                }, {
                    title: "我的任务",
                    html: '任务'
               
               
               
                }, {
                    title: "流程管理",
                    html: "流程管理"
                }]
           
           
            });
           
           
           
            //布局组合
            new Ext.Viewport({
           
                layout: "border",
               
                items: [north_item, south_item, west_item, center_item]
           
            });
            //
            //设置树形面板
            //定义树的根节点
           
           
            var root = new Ext.tree.AsyncTreeNode({
                id: '0',//根节点id
                text: '菜单',
                expanded: true
           
                //
           
           
                //
           
           
           
            });
           
           
           
           
           
            //树数据加载
            var data = new Ext.tree.TreeLoader({
                url: menuUrl
           
                //
           
           
            });
            //生成树形面板
            var tree = new Ext.tree.TreePanel({
                renderTo: 'tree',
                root: root,//定位到根节点
                animate: true,//开启动画效果
                enableDD: false,//不允许子节点拖动
                border: false,//没有边框
                rootVisible: true,//设为false将隐藏根节点,很多情况下,我们选择隐藏根节点增加美观性
                loader: data
            });
           
           
            //子节点事件
           
            tree.on('click', function(node, event){
           
                //得到节点的href
                var href = 'executive.html';
                //var href=node.attributes.href;
                //
                event.stopEvent();
                var n = contentPanel.getComponent(node.id);
               
                if (!n) { //判断是否已经打开该面板  
                    n = contentPanel.add({
                        'id': node.id,
                        'title': node.text,
                        closable: true, //通过html载入目标页  
                        //html: '<iframe scrolling="auto" frameborder="0" width="100%" height="100%" src="executive.html"></iframe>'
                        html: '<iframe scrolling="auto" frameborder="0" width="100%" height="100%" src="' + href + '"></iframe>'
                    });
                }
                contentPanel.setActiveTab(n);
            });
           
           
           
            //
       
       
        });
    </script>
    <body>
        <div id="north-div">
        </div>
        <div id="south-div">
        </div>
        <div id="west-div">
        </div>
        <div id='center-center'>
        </div>
        <div id='center-south'>
        </div>
    </body>
</html>

分享到:
评论
1 楼 qiu768 2010-03-29  
乱七八槽的

相关推荐

    ExtJS3 实现异步下拉树

    在下拉树中,当用户展开树节点时,只加载该节点及其子节点的数据,这减少了初始页面加载时间,提高了用户体验。 核心知识点: 1. **ExtJS TreePanel**:下拉树的基础是TreePanel组件,它是一个显示树形数据结构的...

    ext生成树节点带链接

    本文将详细介绍如何在ExtJS中生成树形菜单,并为每个子节点添加链接,以及如何通过点击这些链接触发相应的事件处理或页面跳转。 #### 2. 构建基础环境 为了构建一个能够生成树形菜单的基础环境,我们首先需要引入...

    利用Ext来实现的静态树(一次加载所有节点的树)

    通常,我们会采用异步加载的方式,即每次用户点击某个节点时,后台再生成该节点的子节点,前台再将其加载出来。但是,这种方式有一个缺点,即用户需要等待服务器响应,这会影响用户体验。 那么,有没有一种方法可以...

    Ext树创建说明.rar

    一个Ext树由节点(Nodes)构成,这些节点可以是叶子节点(没有子节点)或父节点(有子节点)。每个节点都有唯一的标识符,并可以携带额外的数据。节点间的关系通过层级关系建立,形成了树状结构。 创建Ext树的第一...

    Extjs4树结构异步加载

    在这个例子中,当用户点击一个未展开的节点时,`itemclick`事件会被触发,进而调用`store.loadNode(record)`来异步加载子节点。服务器端的`loadSubNodes.php`应返回一个包含子节点数据的JSON对象,其结构为`{nodes: ...

    ExtJs目录树、异步树demo(内涵各种例子10个以及Ext中文API).rar

    在`ExtJs`中,异步树通过Ajax请求获取子节点数据,仅在需要时才加载,减少了页面初始化时的资源消耗。`EXTJS动态树的实现举例+示例代码.rar`和`Y梨Ext动态树的完整示例代码.rar`等文件提供了实际的实现代码,帮助...

    extJs 2异步树 源程序.

    3. **添加根节点**:在TreeLoader中定义根节点,可以是一个空的JSON对象,因为子节点将在异步加载时填充。 4. **将TreeLoader和TreePanel关联**:将创建的`TreeLoader`赋值给`TreePanel`的`loader`属性。 5. **...

    Ext动态树的生成,后台是JSP

    对于异步加载,你需要配置树节点的`expandAction`,通常设置为`'load'`,表示展开节点时加载子节点。同时,配置`loader`对象,设置其`url`属性为JSP页面的URL,`dataType`通常为`'json'`,表示数据类型为JSON。 5....

    ext树 无限级 json 数据格式 动态加载

    EXT树的每个节点都是一个`Ext.tree.Node`对象,包含ID、文本、子节点等属性。无限级树意味着树的层级可以无限深,每一层都可以有任意数量的子节点。这样的结构在处理大型数据集时尤为有用,因为一次性加载所有数据...

    ztree+dwr实现的异步加载树形菜单

    4. **异步加载数据**:当用户展开树形菜单的某个节点时,ZTree会自动触发异步请求,调用DWR中的后台方法获取子节点数据。后台处理完毕后,将结果返回给前端。 5. **接收并渲染数据**:前端接收到数据后,ZTree会...

    ext 级联选择的树形控件

    5. **数据绑定**:树形控件的数据通常是动态加载的,EXT使用Store来管理这些数据,可以与服务器进行异步通信,更新或获取树的结构和状态。 6. **自定义渲染**:EXT允许开发者自定义节点的显示样式和行为,比如通过...

    磁盘目录树(EXT-js)

    2. **使用NodeInterface**:EXT-js的TreeNode实现了NodeInterface接口,使得每个节点都可以拥有父节点、子节点等属性,方便进行树形结构的操作和遍历。 3. **异步加载**:为了提高性能,通常会使用异步加载技术,只...

    Ext 两种树形菜单

    7. **异步加载**:对于大数据量的树形菜单,可以采用异步加载策略,只在需要时加载子节点,提高应用性能。 8. **多选与复选**:通过`selModel`配置,你可以实现树形菜单的多选或单选功能,甚至可以添加复选框来支持...

    Ext动态树中文API

    1. **动态加载**:树节点可以按需加载,即只有在用户展开节点时才加载其子节点的数据,这大大提高了页面的加载速度和用户体验。 2. **自定义节点**:你可以通过配置节点属性来自定义节点的显示样式,如图标、文字...

    如何使用ext写的树形菜单

    每个节点是一个`Ext.data.Model`对象,包含字段和子节点。例如: ```javascript var treeStore = Ext.create('Ext.data.TreeStore', { model: 'NodeModel', // 自定义的Model,包含节点字段 root: { text: '...

    EXT 分页,树形结构案列

    4. 异步加载(Lazy Loading):EXT Tree支持延迟加载,即只有在节点被展开时才加载其子节点数据,这样可以显著减少初次加载的时间。 5. 树形网格(TreeGrid):EXT还提供了结合了表格和树结构的TreeGrid组件,可以...

    ext自定义树组件

    6. **加载与异步**:树组件可以设置为异步加载,通过配置loadFn或使用Ajax请求加载子节点数据,这样可以提高性能,特别是在处理大量数据时。 7. **监听事件**:EXT提供了丰富的事件系统,如checkchange、itemclick...

    Ext JS 树

    5. **事件监听**:Ext JS的树组件提供了丰富的事件,如`itemclick`、`beforeitemexpand`、`itemappend`等,开发者可以监听这些事件进行相应的处理。 6. **拖放操作(Drag and Drop)**:Ext JS的树支持拖放功能,...

    js+ext超炫树形控件

    通过学习这些代码,你可以理解如何在实际项目中创建并定制树形控件,比如添加自定义节点渲染、拖放功能或异步加载。 5. **示例应用**:提供的例子可能是预览树形控件工作效果的实例,涵盖了基本用法到高级特性的...

    ExtJs树形结构 ext的简单应用

    - **加载异步数据**:树节点的数据可以动态加载,当用户展开节点时,通过Ajax请求获取子节点数据。 - **自定义节点模板**:通过`viewConfig`中的`tpl`配置项,可以自定义节点的显示样式和内容。 7. **实际应用** ...

Global site tag (gtag.js) - Google Analytics