Ext.tree带checkbox的bug修正方案

本文介绍如何在ExtJS中实现树节点的checkbox权限控制,防止在只读情况下选择节点。通过覆盖TreeNodeUI的onDblClick方法并使用node.disabled属性来达到目的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近因为需要这样一种业务,点击树的节点的checkbox后将触发一系列动作。但是这种触发需要权限控制,在只读情况下不能选择checkbox。查看api之后发现
disabled : Boolean
如果节点处于无效状态,此值为true。//api的叙述
所以想到使用disabled。但是使用了以后发现双击checkbox之后即使设置了disabled =true,checkbox仍然还是可以被选择。如是查看Ext.tree.TreeNodeUI的源码,发现
// private
onDblClick : function(e){
e.preventDefault();
if(this.disabled){//[b]请注意这里[/b]
return;
}
if(this.checkbox){
this.toggleCheck();
}
if(!this.animating && this.node.isExpandable()){
this.node.toggle();
}
this.fireEvent("dblclick", this.node, e);
}
断点进去查看之后,发现this.disabled始终为undefined,然后我将其修改成 this.node.disabled,功能得以实现。下面是我在程序中的处理方案:
Ext.override(Ext.tree.TreeNodeUI, {
onDblClick : function(e) {
e.preventDefault();
if (this.node.disabled) { return;
}
if (this.checkbox && !this.node.hasChildNodes()) {
this.toggleCheck();
}
if (!this.animating && this.node.hasChildNodes()) {
var isExpand = this.node.ownerTree.doubleClickExpand;
if (isExpand) {
}; this.node.toggle();
}
this.fireEvent("dblclick", this.node, e);
}
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值