日期:2014-05-16 浏览次数:20370 次

?
var tbar = new Ext.Toolbar({
buttonAlign : 'center',
items : [{xtype : 'textfield',emptyText : '根据企业名称检索企业...',id:'filter_input',width : 200}]
});
this.userTreepanel = new Ext.tree.TreePanel({
renderTo : 'tree_menu_'+this.pageId,
region:'north',
title:'用能单位树',
split:true,
width: 210,
tbar : tbar,
height : (this.getBodyHeight(0)-10),
collapsible: false,
margins:'5 0 5 0',
loader: this.treeLoader,
rootVisible:true,
lines: false,
singleClickExpand : true,
autoScroll:true,
root: new Ext.tree.AsyncTreeNode({text:"能效资源服务",id:'-1',expanded:true}),
listeners: {
'click' : function(node,e) {
Main.getPageControler().treeNodeClicked(node);
Main.getPageControler().commit(node);
}
}
});
var tree = this.userTreepanel;
var filter = new Ext.tree.TreeFilter(tree, {
clearBlank : true,
autoClear : true
});
// 保存上次隐藏的空节点
var hiddenPkgs = [];
var field = Ext.get('filter_input');
field.on('keyup', function(e) {
var text = field.dom.value;
// 先要显示上次隐藏掉的节点
Ext.each(hiddenPkgs, function(n) {
n.ui.show();
});
// 如果输入的数据不存在,就执行clear()
if (!text) {
filter.clear();
return;
}
tree.expandAll();
// 根据输入制作一个正则表达式,'i'代表不区分大小写
var re = new RegExp(Ext.escapeRe(text), 'i');
filter.filterBy(function(n) {
// 只过滤叶子节点,这样省去枝干被过滤的时候,底下的叶子都无法显示
return !n.isLeaf() || re.test(n.text);
});
// 如果这个节点不是叶子,而且下面没有子节点,就应该隐藏掉
hiddenPkgs = [];
tree.root.cascade(function(n) {
if (!n.isLeaf() && n.ui.ctNode.offsetHeight < 3) {
n.ui.hide();
hiddenPkgs.push(n);
}
});
});
?
?