ExtJS笔记

来源:互联网 发布:淘宝评价记录能删除吗 编辑:程序博客网 时间:2024/05/28 11:50

在Extjs中使用treepanel时,我们常常会期望点击树节点旁边的加号 “+” 来展开这个节点(这个节点不一定是Treepanel当前选中的节点)。

我们需要对beforeexpandnode或者expandnode事件编程。以下以beforeexpandnode为例,描述该事件的使用方法:

  1. listeners : {     
  2.     'beforeexpandnode' : function(node, deep, animal) {       
  3.         if (node != null || node.id != "top_root")   
  4.         {  
  5.             logicTreeLoader.dataUrl = 'RetrieveData?webAction=getTreeNode&domainID='  
  6.                 + Ext.ComponentMgr.get('cbdomain').getValue()  
  7.                 + "&parentID="+ node.text;  
  8.             logicTreeLoader.load(node);                           
  9.         }  
  10.     }  
  11. }  

  beforeexpandnode事件带有三个参数:node :当前节点,这个节点不是treepanel当前选中的节点,而是要展开的节点(被点 "+" 所在位置的节点);deep:从字面上看是深度的意思,不过这是一个bool变量,目前我还不知道做什么用;animal:也是一个bool变量,意思是开启节点展开的动画。

      以上代码的意思是:在节点展开之前

      1、if (node != null || node.id != "top_root") //判断当前要展开的节点不为空,或者当前要展开节点id不是“top_root”(我定义的根节点id)。

      2、设置treepanel 的loader 。这里将node.text通过dataUrl传给后台服务程序。

      3、异步调用该节点。

 

 

注意:如果如上面所示,当前是一个异步的树, treePanel.load(node); 和 node.expand(); 不要一起使用。因为在异步的情况下,如果node没有获取子节点数据,expand方法本身就会调用treePanel.load(node);。如果一起使用,前端脚本会发出两个相同的请求。