`

Ext 树 异步 同步加载

阅读更多

1.tree的异步加载:



前台代码:
Ext.onReady(function(){


Ext.BLANK_IMAGE_URL="/commons/extjs2.1/extjs/resources/images/default/s.gif";



var root= new Ext.tree.AsyncTreeNode( { id:'1',  text: '我是树根' } );

var loader= new Ext.tree.TreeLoader( {dataUrl: 'aa.jsp'});
var treePanel;


treePanel= new Ext.tree.TreePanel( {
renderTo: 'tree',
root: root,
loader: loader

} );



loader.on('beforeload',function(loader,node){


 
  this.baseParams.id=node.id; //通过这个传递参数,这样就可以点一个节点出来它的子节点来实现异步加载

         
},loader);

});





后台代码:aa.jsp



<%
String id= request.getParameter("id");
if(id.equals("1")){
out.println("[{text: '1节点',  id: '2'},{text: '2子叶', leaf: true, id: 'node2'}]");
}else if(id.equals("2")){
out.println("[{text: '1_1子叶', leaf: true,id: 'node1_1'}]");
}
%>





2.同步加载树,将所有的树的信息以json语句都返回并加载到 tree上,不用点一个节点去访问以下后台



前台代码:
Ext.onReady(function(){


Ext.BLANK_IMAGE_URL="/commons/extjs2.1/extjs/resources/images/default/s.gif";



var root= new Ext.tree.AsyncTreeNode( { id:'1',  text: '我是树根' } );

var loader= new Ext.tree.TreeLoader( {dataUrl: 'bb.jsp'});
var treePanel;


treePanel= new Ext.tree.TreePanel( {
renderTo: 'tree',
root: root,
loader: loader

} );

});





后台代码:bb.jsp

<%



out.println("[{text: '1节点', id: '2',children: [{text: '1_1子叶',id: 'node1_1',children:[{text: '1_1子叶', leaf: true,id: 'node1_12'}]},{text: '1_2子叶', leaf: true,id: 'node1_2'}   ] },{text: '2子叶', leaf: true, id: 'node2'}]");

%>





注意:个人感觉用异步加载好,因为这样不浪费资源,需要查看什么节点从后台获取节点数据显示,而同步加载不管需不需要看,都会将所有节点都返回



遇到的问题:当使用同步加载后,例如删除了node这个节点(非root节点)下的某个子节点,想要刷新该节点node并重新展开该节点时,不知道怎么办,



方法1:行不通

使用  loader.load(node, function() {

        node.expand(true, true);

      })

但是此方法行不通,因为同步树加载时已经将所有的节点都返回并加载到了root上,再使用loader.load并不会再次访问 bb.jsp,如果将loader.load(node)换成loader.load(root)时就可以访问bb.jsp,看方法2,方法3



方法2:行不通

使用



loader.load(root, function(){

 

    node.expand(true, true);//node为想要刷新的节点,因为重新加载root后,如果root不展开,node数据时找不到的

  })

当loader.load(root)时,可以再次访问bb.jsp,但是node.expand(true, true)却会报错,因为这个时候root并没有展开,它找不到深藏的node节点





方法3: 可以试试,我自己试了可以行得通



使用



var path= node.getPath();

loader.load(root, function(){

    treePanel.expandPath(path);   //这样就可以展开node了



})



注意:异步加载不会出现这样的问题,例如想要重新加载node,就可以使用

loader.load(node, function() {

        node.expand(true, true);

      })

 

分享到:
评论

相关推荐

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

    现在我们来详细探讨如何利用ZTree和DWR实现异步加载树形菜单。 首先,ZTree是一个轻量级、灵活的jQuery插件,适用于构建可自定义的树形菜单。它支持多种操作,如点击节点、拖拽节点、右键菜单等,且提供了丰富的API...

    ext.net 中树加载及实现方式,初学者可以参考

    1. **树的数据源**:EXT.NET的树形控件可以通过两种方式加载数据:同步加载(Synchronous)和异步加载(Asynchronous)。同步加载是在页面加载时一次性加载所有节点,适用于数据量较小的情况。而异步加载则在用户...

    ext 动态加载的树源码

    7. **异步与同步加载**:EXT树支持异步和同步两种加载方式。异步加载更常见,它在后台进行,不会阻塞用户界面。同步加载则会等待数据加载完成后再更新界面,一般只在数据量较小或有特定需求时使用。 8. **优化技巧*...

    EXT 树形结构样例

    EXT Tree的配置项也是相当丰富的,例如,你可以定制加载数据的方式(异步或同步)、节点的展开/折叠行为、节点的渲染样式等。例如,你可能需要设置`rootVisible: false`来隐藏根节点,或者使用`loadMask: true`为树...

    ext 同步和异步示例代码

    在EXTJS中,`Ext.lib.Ajax`对象提供了同步和异步调用HTTP方法的功能。在给出的示例代码中,`checkButton`函数用于检查特定按钮的权限状态。它使用了同步的`open`方法来发送GET请求。这是通过设置第三个参数为`false`...

    EXT 分页,树形结构案列

    3. TreeStore:与Grid的Store类似,Tree也有自己的数据存储类TreeStore,它负责加载、管理和同步树节点数据。树数据可以从JSON、XML或自定义的服务器响应中获取。 4. 异步加载(Lazy Loading):EXT Tree支持延迟...

    Ext表格控件和树控件

    它可以是同步加载或异步加载。在上面的示例中,`TreeLoader` 从 `data.json` 文件加载数据。 ##### 5.4 自定义 `TreeLoader` 对于更复杂的需求,可以自定义 `TreeLoader` 的行为。例如,可以实现自己的 `...

    extJs 2异步树 源程序.

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

    Ext_JS应用系统中的智能树形菜单

    1. **异步加载**:对于大型数据集,我们可以使用EXT JS的分页和异步加载功能。当用户展开一个节点时,仅请求并加载该节点的子节点,这大大减少了初始页面加载时间。 2. **节点状态管理**:EXT JS支持保存和恢复树的...

    ext-basex.js 进行Ext.Ajax.request 同步请求 FF无法正常

    标题提到的"ext-basex.js进行Ext.Ajax.request同步请求 FF无法正常"问题,涉及到浏览器兼容性和异步/同步请求的理解。 `Ext.Ajax.request`是ExtJS中的一个方法,用于发起Ajax(异步JavaScript和XML)请求。它可以...

    EXT tree 使用 实例 最新

    3. **模型(Model)和存储(Store)**:EXT JS使用数据模型(TreeModel)来定义节点的结构,而存储(TreeStore)负责管理数据,处理数据的加载、更新和同步。 4. **渲染器(Renderer)**:通过定义`renderer`函数,...

    EXT安装包4.2.1-1

    2. **数据绑定**:EXT支持双向数据绑定,使得视图层和模型层之间的数据同步变得简单,降低了代码的复杂性。 3. **响应式设计**:EXT4.2.1具备响应式布局,能够自动适应不同的屏幕尺寸和设备,确保在移动设备和桌面...

    ext 3.3 中文 chm

    此外,EXT 3.3 还支持Ajax交互,能够轻松实现异步数据加载,提升用户体验。 在EXT 3.3 中,布局管理器(Layout Manager)是一个重要的特性,它负责管理组件的大小和位置,确保它们在页面上正确地排列和适应不同屏幕...

    ext 3.0中文API

    AJAX请求通过`Ext.Ajax`类进行,支持异步加载数据,可以方便地添加回调函数处理响应。同时,EXT 3.0强化了拖放功能,提供了`Ext.dd.DD`和`Ext.dd.DDProxy`等接口,使得元素拖放操作变得直观易用。 在EXT 3.0中文...

    ext中文帮助文档最终版

    Store组件可以处理数据的加载、刷新和同步,与服务器进行数据交换。 9. **皮肤和主题**:EXT支持多主题,允许开发者通过CSS改变应用的整体外观,实现界面风格的个性化。 10. **国际化支持**:"ext中文帮助文档最终...

    ext1.1 api(chm_en)

    开发者可以使用EXT的AJAX API进行数据的异步加载和更新,实现动态和实时的Web应用。 最后,EXT1.1 API文档还覆盖了数据存储(Data Store)和数据模型(Data Model)的概念,这对于处理和展示大量数据至关重要。数据...

    ext后台经典实例

    1. **Ajax通信**:EXT使用Ext.Ajax类进行异步通信,与后台服务器交换数据。例如,当用户执行增删改查操作时,EXT会发送Ajax请求到指定的服务器端接口,然后接收并处理返回的数据。 2. **数据模型(Model)**:EXT中...

    EXT ,EXT.chm,ext中文

    6. **AJAX通信**:EXT内置了AJAX功能,方便与服务器进行异步通信,实现数据的动态加载和更新。 7. **强大的事件系统**:EXT的事件模型允许组件之间进行通信和交互,提高了代码的可复用性和模块化。 8. **可扩展性*...

    EXT4 自己整理的一些常用方法

    EXT4的数据管理组件提供了强大的数据绑定机制,能轻松地将数据与视图进行同步。 4. **Util**: Util通常代表实用工具或通用函数库,这部分可能包括EXT4中的各种辅助函数,用于提高开发效率,如日期时间处理、字符...

Global site tag (gtag.js) - Google Analytics