EXTJS 树面板禁用选择更改
EXTJS tree panel disable selection change
我有树面板:
xtype : 'treepanel',
itemId : 'field-tree-command-metas',
region : 'center',
hideHeaders : true,
rootVisible : false,
emptyText : 'No Commands Available',
deferEmptyText : true,
bufferedRenderer : false,
reference : 'treeCommandMetas',
bind : {
selection : '{bindSelection}'
},
listeners : {
boxready : function() {
var treeView = this.getView();
treeView.refresh();
}
},
columns : [ {
xtype : 'noicontreecolumn',
dataIndex : 'name',
flex : 1,
nodeIconsProvider : function(record) {
if (record.isLeaf()) {
return [ '<i class="' + Glyphs.getIconClass('square-o', 'size-14px') + '"></i>' ];
}
if (record.isExpanded()) {
return [ '<i class="' + Glyphs.getIconClass('folder-open-o', 'fa-lg') + '"></i>' ];
}
return [ '<i class="' + Glyphs.getIconClass('folder-o', 'fa-lg') + '"></i>' ];
}
} ],
displayField : 'name',
store : 'Plugin.scheduler.store.CommandMetaStore'
在此树中加载的表单上,选择了一条记录。
是否可以禁用其他选择?我的意思是,如果选择了树中的某些内容,则用户无法更改选择。
已尝试 'disableSelection:true' 但它会禁用所有选择,我希望默认情况下可见的选择。
您可以使用 setLocked
禁用其他选择:
treepanel.getSelectionModel().setLocked(true);
如果你想启用选择,你可以使用相反的方式:
treepanel.getSelectionModel().setLocked(false);
我这里有一个使用 ExtJS 4.2.1 的例子:https://fiddle.sencha.com/#fiddle/nqf
实施 beforeselect 侦听器并使其 return 为 false 以禁用鼠标单击选择:
listeners:{
boxready : your boxready function,
beforeselect :function(){
return false;
}
}
然后无论何时单击树的任何一行,选择都不会改变。
这里是 api 解释:
beforeselect( this, record, index, eOpts )
Fired before a record is selected. If any listener returns false, the selection is cancelled.
Please refer api doc here.
我有树面板:
xtype : 'treepanel',
itemId : 'field-tree-command-metas',
region : 'center',
hideHeaders : true,
rootVisible : false,
emptyText : 'No Commands Available',
deferEmptyText : true,
bufferedRenderer : false,
reference : 'treeCommandMetas',
bind : {
selection : '{bindSelection}'
},
listeners : {
boxready : function() {
var treeView = this.getView();
treeView.refresh();
}
},
columns : [ {
xtype : 'noicontreecolumn',
dataIndex : 'name',
flex : 1,
nodeIconsProvider : function(record) {
if (record.isLeaf()) {
return [ '<i class="' + Glyphs.getIconClass('square-o', 'size-14px') + '"></i>' ];
}
if (record.isExpanded()) {
return [ '<i class="' + Glyphs.getIconClass('folder-open-o', 'fa-lg') + '"></i>' ];
}
return [ '<i class="' + Glyphs.getIconClass('folder-o', 'fa-lg') + '"></i>' ];
}
} ],
displayField : 'name',
store : 'Plugin.scheduler.store.CommandMetaStore'
在此树中加载的表单上,选择了一条记录。 是否可以禁用其他选择?我的意思是,如果选择了树中的某些内容,则用户无法更改选择。 已尝试 'disableSelection:true' 但它会禁用所有选择,我希望默认情况下可见的选择。
您可以使用 setLocked
禁用其他选择:
treepanel.getSelectionModel().setLocked(true);
如果你想启用选择,你可以使用相反的方式:
treepanel.getSelectionModel().setLocked(false);
我这里有一个使用 ExtJS 4.2.1 的例子:https://fiddle.sencha.com/#fiddle/nqf
实施 beforeselect 侦听器并使其 return 为 false 以禁用鼠标单击选择:
listeners:{
boxready : your boxready function,
beforeselect :function(){
return false;
}
}
然后无论何时单击树的任何一行,选择都不会改变。
这里是 api 解释:
beforeselect( this, record, index, eOpts )
Fired before a record is selected. If any listener returns false, the selection is cancelled. Please refer api doc here.