浏览 3007 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-10-18
new xt.TreeFilter(stree).filter('data'); 默认是false,这就是只把text中以data开头的节点都显示出来,如果这样 new xt.TreeFilter(stree,{reverse:true}).filter('data'); 应该是把data开头的不显示,其他的显示出来,但是如果这样写,将什么也显示不出来 他的源码是这样 filterBy : function(fn, scope, startNode){ startNode = startNode || this.tree.root; if(this.autoClear){ this.clear(); } var af = this.filtered, rv = this.reverse; var f = function(n){ if(n == startNode){ return true; } if(af[n.id]){ return false; } var m = fn.call(scope || n, n); if(!m || rv){//这里当我的rv也就是reverse为真,那么恒为真,就是都被隐藏了 af[n.id] = n; n.ui.hide(); return false; } return true; }; startNode.cascade(f); if(this.remove){ for(var id in af){ if(typeof id != "function"){ var n = af[id]; if(n && n.parentNode){ n.parentNode.removeChild(n); } } } } }, 我改了这个方法 Ext.override(Ext.tree.TreeFilter,{ filterBy : function(fn, scope, startNode){ startNode = startNode || this.tree.root; if(this.autoClear){ this.clear(); } var af = this.filtered, rv = this.reverse; var f = function(n){ if(n == startNode){ return true; } if(af[n.id]){ return false; } var m = fn.call(scope || n, n); if(!(m ^rv)){//这里使用同或就是都为真隐藏,都为假也隐藏,这时你再试就是翻转为false时,只显示我过滤的东西,翻转为真时,只显示其他 af[n.id] = n; n.ui.hide(); return false; } return true; }; startNode.cascade(f); if(this.remove){ for(var id in af){ if(typeof id != "function"){ var n = af[id]; if(n && n.parentNode){ n.parentNode.removeChild(n); } } } } } }) 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-04-07
楼主!非常好....你那个扩展什么意思?有点看不明白....我现在就是想做个tree的过滤功能.....也等于查询功能....我的就是查询.
Ext.onReady(function(){ tree = new Ext.tree.TreePanel({ el:'tree' }); root = new Ext.tree.TreeNode({id:'1',text:'赣州市'}); node1 = new Ext.tree.TreeNode({id:'2',text:'黄金区'}); var node2 = new Ext.tree.TreeNode({id:'3',text:'黄金街'}); var node4 = new Ext.tree.TreeNode({id:'5',text:'红星'}); var node3 = new Ext.tree.TreeNode({id:'4',text:'章贡区'}); var node5 = new Ext.tree.TreeNode({id:'4',text:'黄金道'}); tree.setRootNode(root); node2.appendChild(node4); node1.appendChild(node2); node3.appendChild(node5); root.appendChild(node1); root.appendChild(node3); //root.appendChild(node4); new Ext.tree.TreeSorter(tree,{dir:'DESC'}); tf = new Ext.tree.TreeFilter(tree, {reverse:false, clearBlank: true, autoClear: true, remove:false}); tree.render(); root.expand(true, true); })这是我代码!但当我查询红星的时候 过滤不到了.因为它上一级就已经删除掉了....你能告诉我吗?你的代码可以拿出来看看吗???谢谢了... |
|
返回顶楼 | |