`
tesia
  • 浏览: 32914 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

Ext.data.TreeStore 分级异步加载树节点示例

阅读更多
Ext.data.TreeStore远程加载树节点有两种常用方式,分别是:分级加载和整体加载。
对于结构复杂数据量大的树结构使用分级加载可以极大提高程序响应速度并提升用户体验。


客户端:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'treecolumn.jsp' starting page</title>
   
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">   
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
  <link rel="stylesheet" type="text/css" href="resources/css/ext-all.css">
<script type="text/javascript" src="ext-all.js" ></script>
    <script type="text/javascript" src="locale/ext-lang-zh_CN.js"></script>
<script type="text/javascript">
   Ext.onReady(function(){
     //定义数据模型
         Ext.regModel("OrgInfo",{
            fields:['orgId','name','count']
             });
         var myStore=new Ext.data.TreeStore({
              model:'OrgInfo',
              nodeParam:'orgId', //节点参数名
              proxy:{
                 type:'ajax',
                 url:'treestore/treeServer.jsp',
                 reader:'json'
              },
              autoLoad:true,
              root:{
                    name:'根节点',
                   expanded : true,//根节点是否展开
                    id:'-1'
                  }
             });
         Ext.create('Ext.tree.Panel',{
                title:'分级异步加载树节点示例',
                renderTo:Ext.getBody(),
                width:250,
                height:200,
                columns:[{
                  xtype:'treecolumn', //树状表格列
                  text:'公司名称',
                  dataIndex:'name',
                  width:150,
                  sortable:true
                    },
                    {
                   text:'员工人数',
                   dataIndex:'count',
                   flex:1,
                   sortable:true
                        }],
                      store:myStore,
                      rootVisible:false //,隐藏根节点
                     //useArrows:true
             });
   });
</script>
  </head>
 
  <body>
  
  </body>
</html>

服务器端:treeServer.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String orgId=request.getParameter("orgId");
String result="";
if("-1".equals(orgId)){
result="[{name:'总公司',count:100,id:100}]";  
}else if("100".equals(orgId)){
    result="[{name:'分公司一',count:20,id:110},{name:'分公司二',count:80,id:120}]"; 
}else if("120".equals(orgId)){
    result="[{name:'部门一',count:30,id:121,leaf:true},{name:'部门二',count:50,id:122,leaf:true}]";
}
response.getWriter().write(result);
%>

注:所有示例来自《ExtJS Web 应用程序开发指南》第2版
这是第13章,开始没有得到想要的效果。后来问了其他朋友才知道少了
expanded : true,这行代码,没有默认展开根节点。

如果加上 useArrows:true  在树节点中使用箭头 ,效果如图usearrow.jpg
  • 大小: 14.7 KB
  • 大小: 12 KB
分享到:
评论

相关推荐

    extjs中Ext.Panel和TreePanel 组件动态加载本地页面数据

    store: Ext.create('Ext.data.TreeStore', { model: 'TreeNode', proxy: { type: 'ajax', url: 'tree_data.json', reader: { type: 'json', root: 'nodes' } }, autoLoad: true }), rootVisible: false...

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

    为了实现动态加载,EXT树使用了`Ext.data.TreeStore`,它是一个专门用来处理树形数据的存储类。TreeStore可以通过配置`proxy`来指定数据源,通常使用Ajax或ScriptTagProxy来实现异步加载。以下是一个基本配置示例: ...

    ext生成树节点带链接

    这里定义了一个`TreePanel`,它使用`AsyncTreeNode`作为根节点,并配置了异步加载器(`TreeLoader`),该加载器指向了一个XML文件,该文件包含了树形菜单的具体数据。 #### 4. 添加链接及事件处理 为了让树形菜单中...

    ext 下拉树

    在Ext 4.0版本中,下拉树的实现主要依赖于几个关键组件:`Ext.tree.Panel`(树面板)、`Ext.form.field.Tree`(树形字段)以及可能用到的`Ext.data.TreeStore`(树存储)。下面我们将详细探讨这些知识点: 1. **Ext...

    [Ext 3.x + Ext 2.x] 下拉树 Ext.ux.ComboBoxTree

    1. `store`:定义数据存储对象,可以是Ext.data.TreeStore,用于保存树形结构的数据。 2. `displayField`:指定显示在下拉框中的字段,通常是从树节点数据中提取的属性。 3. `valueField`:选择后记录的值,通常是树...

    Ext.Tree.Panel

    - 使用`Ext.data.TreeStore`可以更灵活地管理树的数据源,支持远程数据加载和实时更新。 8. **示例代码**: 示例代码中,`treePanel.html`定义了HTML结构,`treePanel.js`包含了`TreePanel`的创建和配置。`...

    Extjs4树结构异步加载

    异步加载,也称为懒加载或需求加载,意味着当用户滚动、展开节点或者进行其他交互时,只加载当前需要的数据,而不是一次性加载整个树。这在处理大量数据或深层级结构时特别有用,因为它减少了初次加载时的网络传输量...

    根据输入的关键字过滤ext树节点

    2. **定义数据源**(store):树节点的数据通常存储在Ext.data.TreeStore中,每个节点代表一个记录,包含id、text、children等字段。可以使用Ext.data.Model定义模型,然后通过Ext.data.TreeStore加载数据。 ```...

    extjs动态树的示例代码.rar

    2. **Ext.data.TreeStore**:用于存储树结构数据的Store类型,它扩展了`Ext.data.Store`。TreeStore管理着树的节点,并负责加载和解析JSON数据。在动态树中,通常会配置`loadOnDemand`属性,以便按需加载子节点。 3...

    Ext Js权威指南(.zip.001

    7.5.11 树节点:ext.data.nodeinterface与ext.data.tree / 364 7.5.12 store的方法 / 366 7.5.13 store的事件 / 368 7.5.14 store管理器:ext.data.storemanager / 369 7.6 综合实例 / 369 7.6.1 远程读取json...

    Ext 中的Tree实现不同节点不同的右键菜单

    在IT领域,尤其是在Web开发中,用户界面的交互性与...通过结合`Ext.menu.Menu`和`Ext.data.TreeStore`,我们可以创建交互性强且符合业务需求的Tree组件。这个功能对于提高用户界面的易用性和提供定制化服务非常有帮助。

    EXT下拉框显示树形结构源代码

    - 创建树存储(EXT.data.TreeStore),并加载数据 - 创建EXT.form.field.TreeCombo实例,配置store、displayField、valueField等属性 - 添加事件监听器,如'expand'、'select'等 - 将COMBO TREE组件添加到一个布局...

    Ext树创建说明.rar

    2. ` store`: 存储节点数据的Ext.data.TreeStore对象,需要包含节点数据的模型(Model)和数据源(DataSource)。 3. ` root`: 作为树的根节点,通常包含在store中。 4. ` checkboxes`: 如果需要,可以启用复选框...

    ExtJS3 实现异步下拉树

    需要定义一个`TreeStore`,配置`proxy`为`Ext.data.TreeProxy`,并设置`url`属性指定服务器接口地址,用于获取节点数据。 3. **JsonReader**:数据解析器,负责将服务器返回的JSON数据转化为TreeStore可以理解的...

    Ext JS 深入浅出 树形结构

    节点的数据通常是通过`Ext.data.TreeStore`来管理的,这是一个特殊的`Ext.data.Store`,专门用于处理树形数据。 **树形结构的配置与功能:** - **展开和折叠:** 可以通过`expanded`属性来控制节点的展开和折叠状态...

    ExtJs_TreeDemo

    - `Ext.data.TreeStore`用于管理树节点数据,它可以连接到服务器进行异步加载。 3. **节点操作**: - `expand()`: 展开节点。 - `collapse()`: 折叠节点。 - `select()`: 选择节点。 - `unselect()`: 取消选择...

    Extjs4.X下comboboxTree下拉树型菜单,完美支持多选、单选,绝对好用

    store: Ext.create('Ext.data.TreeStore', { model: 'Department', root: { text: '所有部门', expanded: true, children: [ /* ... */ ] } }), displayField: 'text', valueField: 'id', mode: '...

    Extjs4 下拉树 TreeCombo

    TreeCombo的数据源是TreeStore,它继承自Ext.data.Store,用于存储树形结构数据。你需要定义模型(Model)来描述数据结构,并创建TreeStore实例,将数据加载到其中。 3. **定义TreeNode**: 每个TreeNode代表树的...

    ExtJS构造动态异步加载

    var treeStore = Ext.create('Ext.data.TreeStore', { model: 'TreeNode', // TreeNode是自定义的数据模型 proxy: { type: 'ajax', // 使用AJAX代理 url: 'tree-data.php', // JSON数据的获取地址 reader: { ...

    Ext tree 结合dwr 调用后台数据

    Ext JS的Tree组件支持动态加载,可以按需请求和显示子节点,极大地提高了用户体验。 接着,我们来看**Direct Web Remoting (DWR)**。DWR是一种让Java方法可以直接在JavaScript中调用的技术,无需编写复杂的AJAX代码...

Global site tag (gtag.js) - Google Analytics