`
lbyzx123
  • 浏览: 477860 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

extjs4 异步树的写法

 
阅读更多

The data for this tree is asynchronously loaded through a TreeStore and AjaxProxy.


js代码如下:

Ext.require([
    'Ext.tree.*',
    'Ext.data.*',
    'Ext.tip.*'
]);

Ext.onReady(function() {
    Ext.QuickTips.init();
    
    var store = Ext.create('Ext.data.TreeStore', {
        proxy: {
            type: 'ajax',
            url: 'organization!getDirectSubordinates.action'
        },
        root: {
            text: '根节点',
            id: '0',
            expanded: true
        },
        folderSort: true,
        sorters: [{
            property: 'text',
            direction: 'ASC'
        }]
    });

    var tree = Ext.create('Ext.tree.Panel', {
        store: store,
        rootVisible:false,
        viewConfig: {
            plugins: {
                ptype: 'treeviewdragdrop'
            }
        },
        renderTo: 'tree-div',
        height: 300,
        width: 250,
        title: 'Files',
        useArrows: true,
        dockedItems: [{
            xtype: 'toolbar',
            items: [{
                text: 'Expand All',
                handler: function(){
                    tree.expandAll();
                }
            }, {
                text: 'Collapse All',
                handler: function(){
                    tree.collapseAll();
                }
            }]
        }]
    });
});


java代码如下:

package com.dahuatech.work.action;

@Namespace("/")

@Scope("prototype")
@Controller(value = "organization")
public class OrganizationAction extends BaseAction {
    private String node;
   
    @Action(value = "getDirectSubordinates")
    public String getDirectSubordinates() throws Exception {
        JSONArray json = new JSONArray();
        if (node.equals("0")) {
            JSONObject object = new JSONObject();
            object.put("id", "1");
            object.put("text", "广东");
            object.put("cls", "folder");
            json.add(object);
        }
        if (node.equals("1")) {
            JSONObject ob1 = new JSONObject();
            ob1.put("id", "2");
            ob1.put("text", "11RPU");
            ob1.put("cls", "folder");
            json.add(ob1);
        }
        if (node.equals("2")) {
            JSONObject ob1 = new JSONObject();
            ob1.put("id", "3");
            ob1.put("text", "11Chanel");
            ob1.put("leaf", true);
            ob1.put("cls", "file");
            JSONObject ob2 = new JSONObject();
            ob2.put("id", "4");
            ob2.put("text", "22Chanel");
            ob2.put("leaf", true);
            ob2.put("cls", "file");
            json.add(ob1);
            json.add(ob2);
        }
        ActionContext ctx = ActionContext.getContext();
        HttpServletResponse response = (HttpServletResponse) ctx
                .get(ServletActionContext.HTTP_RESPONSE);
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.print(json.toString());
        return null;
    }
   
    public String getNode() {
        return node;
    }

    public void setNode(String node) {
        this.node = node;
    }
}
作用:生成异步请求时的json数据。


当展开节点时,前台会把json数据中节点的id通过node参数传送到后台。

分享到:
评论
8 楼 东辉VS风行 2013-07-08  
东辉VS风行 写道
写的很好,没看懂的就要自己多看些书,别喷楼主  我感觉楼主写的挺好的

那些不知道node的 就不能加个断点调试下

再联系下action的特性 属性通过get和set方法自动传递

问题不就解决了 自己是个大笨蛋 还喷楼主

7 楼 东辉VS风行 2013-07-08  
写的很好,没看懂的就要自己多看些书,别喷楼主  我感觉楼主写的挺好的

那些不知道node的 就不能加个断点调试下

再联系下action的特性 属性通过get和set方法自动传递

问题不就解决了 自己是个大笨蛋 还喷楼主
6 楼 546968662 2013-04-26  
博主给解释一下异步请求时为什么会带上节点参数id
5 楼 zipmoon 2012-08-30  
不给lib包 不给配置 还不如不写 没前途的人
4 楼 yingwuhahahaha 2012-07-13  
lbyzx123 写道
hable 写道
看不明白啊,能不能加点注释


很简单呀,既然是异步,就是点击一下,去请求下级的json数据,用firefox看一下就明白了,node就是父级节点的id.可以在程序里直接使用。


恩,lz的代码确实是可用的,其实实现的关键在于 TreeStore的节点在expand的时候,会把自己的id当做一个名为node的参数放在ajax请求里,没有理解的人都是没做实验的,这个在文档里是没有的,我也是看了楼主的例子做了实验才发现的.

谢谢了
3 楼 TJYCHYANGCHENHUI 2012-05-02  
写东西写的真垃圾!你就不能写好点啊[b][/b]
2 楼 lbyzx123 2011-08-29  
hable 写道
看不明白啊,能不能加点注释


很简单呀,既然是异步,就是点击一下,去请求下级的json数据,用firefox看一下就明白了,node就是父级节点的id.可以在程序里直接使用。
1 楼 hable 2011-08-29  
看不明白啊,能不能加点注释

相关推荐

    extjs异步树,多选树,json数据机构,集成spring,struts例子

    extjs异步树,多选树,json数据机构,集成spring,struts例子,extjs异步树,多选树,json数据机构,集成spring,struts例子,extjs异步树,多选树,json数据机构,集成spring,struts例子,extjs异步树,多选树,json...

    ExtJS3 实现异步下拉树

    在ExtJS 3中,实现异步下拉树涉及到几个关键概念和技术。 首先,理解“异步”意味着数据不是一次性加载完毕,而是按需加载。在下拉树中,当用户展开树节点时,只加载该节点及其子节点的数据,这减少了初始页面加载...

    ExtJs4.1.1a 异步树&级联选择

    说明:本例主要实现在树节点数据过多的情况下对数据进行异步请求,并且在请求数据返回前台的同时实现级联选择。使用ExtJs版本为4.1.1a,在struts2下测试通过。例子仅供提供思路,简单易懂,不负责代码优化,哈哈!

    Extjs4 下拉树 TreeCombo

    ExtJS 4 下拉树(TreeCombo)是一种组合控件,它将传统的下拉框与树形结构结合在一起,提供了一种在有限空间内展示层级数据的高效方式。这种控件在很多场合都非常实用,例如在需要用户选择分类或者层级结构的场景中...

    Extjs4树结构异步加载

    在ExtJS4中实现树结构的异步加载,主要涉及以下几个关键概念: 1. **TreeStore**: TreeStore是树结构的数据源,它负责管理与服务器之间的数据通信。对于异步加载,我们需要配置TreeStore,设置`autoLoad`为`false`...

    extJs 2异步树 源程序.

    在这款框架中,异步树(Asynchronous Tree)是一种重要的组件,它允许开发者动态加载树形结构的数据,提高网页性能,尤其是在处理大量数据时。异步树通常与JSON(JavaScript Object Notation)数据格式结合使用,以...

    extjs异步树-每个节点都异步加载-前后台代码都有-附整个工程

    在家研究了一下extjs异步树,-每个节点都异步加载-前后台代码都有-附整个工程-运行通过-前台代码请看doctree.js,后台代码请看TreeService.java,运行环境:Myeclipse6.5+tomcat7.0.27

    Extjs4下拉树菜单ComboBoxTree支持单选和多选并且支持展开选中指定节点的通用控件

    在这个特定的情况下,我们讨论的是一个定制的下拉树菜单控件——ComboBoxTree,它在ExtJS4中实现了单选和多选功能,并且具备展开选中指定节点的能力。这个控件在实际项目中已经被广泛使用并证明了其稳定性和实用性,...

    extjs tree 异步加载树型

    ExtJS Tree 是一个基于 ExtJS 框架的组件,用于构建可交互的、层级结构的树形控件。在 Web 开发中,它经常被用来展示目录结构、组织架构或者复杂的分类数据。异步加载树型是 ExtJS Tree 的一个重要特性,允许只在...

    Extjs4 下拉树( v1.0版本有bug,已经上传一个可以用的)

    标题中的“Extjs4 下拉树”指的是EXTJS框架中的一个组件,用于实现下拉菜单与树形结构的结合,这种组件通常在需要选择层级结构数据时非常有用,比如地区选择、组织架构选择等。EXTJS是Sencha公司开发的一个...

    ExtJs4.2下拉树(修改版)

    ExtJs4.2没有直接提供下拉树这个组件,但是有例子可以用,文件位置:ext-4.2.1.883\examples\ux\TreePicker.js 但是它有点小毛病吧:默认显示了根节点;达到最小高度时再展开节点,高度不能自动调整。 所以我做了一...

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

    在给定的压缩包文件中,包含了许多关于ExtJs中目录树和异步树的示例,这些示例可以帮助开发者深入理解和运用这一功能。以下是对这些知识点的详细解释: 1. **ExtJs目录树(Tree)**: ExtJs的树组件(Tree)允许...

    ExtJS构造动态异步加载

    本文将深入探讨如何使用ExtJS构建动态异步加载的树形结构,结合AJAX技术实现JSON数据的高效传输。 首先,我们要理解什么是动态异步加载。在传统的网页开发中,如果一次性加载所有数据,可能会导致页面加载速度慢,...

    EXTJS 4 树形表格组件使用示例

    在EXTJS 4中,树形表格组件不仅支持基本的节点操作,如展开、折叠、拖放,还提供了丰富的数据绑定和筛选功能,是处理复杂数据结构的理想选择。 首先,让我们深入了解一下EXTJS 4树形表格组件的特性: 1. **层级...

    extjs实现动态树

    4. 数据绑定:使用`store`属性与数据源进行绑定,通过监听`load`事件实现异步加载。 二、动态加载 1. `rootVisible`:设置为false可隐藏根节点,使树形结构从第一级节点开始显示。 2. `async`:设置为true启用异步...

    实现extjs4 的树、grid、form、query等大部分组件的功能

    EXTJS4的树组件支持动态加载、拖放操作、节点的增删改查等功能。通过配置store、model和节点渲染器,我们可以定制树的显示效果和交互行为。 接着,网格(Grid)组件是EXTJS的核心组件之一,用于展示大量数据并支持...

    extjs 树 搜索

    7. **异步加载**:对于拥有大量子节点的树,EXTJS支持延迟加载或按需加载。只有当用户展开父节点时,才会请求并加载其子节点,这样可以显著提高性能。 8. **搜索性能优化**:在处理大量数据时,可以考虑对树进行...

    springmvc+extjs4实例树

    标题中的“springmvc+extjs4实例树”指的是一个结合了SpringMVC和ExtJS4技术的实战项目,主要用于创建一个具有树形结构的用户界面。这个项目可能用于展示层次结构的数据,例如组织架构、文件系统或者数据库的分类...

    Extjs下拉多选树

    4. **Combobox Tree组件**:在ExtJS中,Combobox是一个下拉框组件,它允许用户从预定义的列表中选择一个值。将树形结构与Combobox结合,就形成了Combobox Tree。这个组件需要自定义配置,包括树的数据源、显示模式...

    extJs3升级extjs4方案

    ExtJS3 升级到 ExtJS4 方案 ExtJS3 升级到 ExtJS4 需要修改大量代码,主要是因为 ExtJS4 配备了一类新的系统,不向后兼容。在 ExtJS 3 里生成表的几个框架组件,ExtJS4 大多生成 div,这使得 CSS classes 将会失败...

Global site tag (gtag.js) - Google Analytics