论坛首页 AJAX版 EXT

关于Ext tree的disable问题

浏览 1058 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2007-10-27 关键字: Ext tree
tree.on('beforeload',function(node){
	if(node.isLeaf()){	
              node.disable();
    } 
});


我想在整个树构造好显示出来前把叶子结点disable掉,但是上面的方法是不可以的。谁有什么更好的方法呢?谢谢
   
最后更新时间:2007-10-27
问题解决,又遇到一个问题,我如果不把叶子结点disable,只是改变一下样式该怎么做呢?
   
0 请登录后投票
最后更新时间:2007-10-30
不知道你第一个是怎么实现的,我的实现方法跟大家共享一下,
stree.on("beforechildrenrendered",function(node){
		for(var i = 0 ;i < node.childNodes.length;i++){
			if(node.childNodes[i].text.indexOf('debug.js')!=-1){
				node.childNodes[i].disabled = true;				
			}
		};
	}, this);

stree是treepanel的对象你可以在for中加入你想要的效果,在例子中我是要把text为debug.js的节点一出来就变成disabled.

第二个问题,只要改变上边
node.childNodes[i].getUI().addClass('你的css的类名')
   
0 请登录后投票
最后更新时间:2007-10-30
多谢楼上的热心!
		tree.on('load', function(node){
			var arrayTemp = node.childNodes;
			for(var i=0; i<arrayTemp.length; i++){
				if(arrayTemp[i].isLeaf()){
					//alert('yes or not');
					//node.childNodes[i].style='cursor:crosshair';
					//alert(arrayTemp[i].cls.cursor);//='crosshair';
					//这里加disable的条件
					arrayTemp[i].disable();
				}
			}
		});

   
0 请登录后投票
最后更新时间:2007-10-30
ecnulxq 写道
多谢楼上的热心!
		tree.on('load', function(node){
			var arrayTemp = node.childNodes;
			for(var i=0; i<arrayTemp.length; i++){
				if(arrayTemp[i].isLeaf()){
					//alert('yes or not');
					//node.childNodes[i].style='cursor:crosshair';
					//alert(arrayTemp[i].cls.cursor);//='crosshair';
					//这里加disable的条件
					arrayTemp[i].disable();
				}
			}
		});

我是取得非叶子结点,然后根据他们的自结点是不是叶子结点来disable的
   
0 请登录后投票
最后更新时间:2007-10-30
campaign 写道
不知道你第一个是怎么实现的,我的实现方法跟大家共享一下,
stree.on("beforechildrenrendered",function(node){
		for(var i = 0 ;i < node.childNodes.length;i++){
			if(node.childNodes[i].text.indexOf('debug.js')!=-1){
				node.childNodes[i].disabled = true;				
			}
		};
	}, this);

stree是treepanel的对象你可以在for中加入你想要的效果,在例子中我是要把text为debug.js的节点一出来就变成disabled.

第二个问题,只要改变上边
node.childNodes[i].getUI().addClass('你的css的类名')


有个问题:
node.childNodes[i].getUI().addClass('testcursor');
比如我要改变叶子结点的鼠标样式,如上代码。
附:
	<style type="text/css">
	.testcursor {
		cursor: crosshair
	}
	</style>

是不行的。
   
0 请登录后投票
最后更新时间:2007-10-31
对不住啦,自己没试,错了,一下我试过了在ext1.1.1的版本下
stree.on("expand",function(node){
		for(var i = 0 ;i < node.childNodes.length;i++){
			if(node.childNodes[i].text.indexOf('debug.js')!=-1){
				node.childNodes[i].ui.textNode.style.backgroundColor="#cccccc";
				
			}
		};
	}, this);

这样在你刷出这个树时,debug.js的这个节点的北京颜色是灰的,当然也可以是className.
我捎带说一下ui,的作用和其他属性
通过node.getUI,或ui方法,你就可以得到TreeNodeUI这个对象了,在ext的文档中是没有这个类的api,不知是为啥,但这个类是非常重要的,是这个类中的render方法画出树中的每个节点,
它是由以下的属性表示的(是按着这个顺序)
ui.indentNode他是span对象,在span中放的是img这个图就是我们在开头用的Ext.BLANK_IMAGE_URL空白用的图,
ui.ecNode只是img,他是最那个展开的加减号
ui.iconNode(img),就是节点的图标
ui.checkbox(checkbox)这不是一定有,要你返回的属性中有checked才会出现
ui.anchor(a标签)不用说是你点击时的跳转了
ui.textNode(span)这是你节点显示的内容了
   
0 请登录后投票
最后更新时间:2007-10-31
多谢楼上,你是我来JAVAEYE社区的EXT板块见过最热心的人,以后有问题还要多向您请教
   
0 请登录后投票
最后更新时间:2007-10-31
哈哈,谢谢,其实告诉别人也是对自己的提高
   
0 请登录后投票
论坛首页 AJAX版 EXT

跳转论坛:
JavaEye推荐