我在我的应用程序中使用JSTree并使用以下代码。
this.CreateTreeView = function () {
$('#jstree_demo_div').jstree({
'core': {
'multiple': false,
'data': [
{ "id": "ajson1", "parent": "#", "text": "Simple root node" },
{ "id": "ajson2", "parent": "#", "text": "Root node 2" },
{ "id": "ajson3", "parent": "ajson2", "text": "Child 1" },
{ "id": "ajson4", "parent": "ajson2", "text": "Child 2" },
]
}
});
}
如我的代码所示,我试图禁用多项选择。
现在,当我使用以下代码选择节点时。
$("#jstree_demo_div").jstree().select_node("ajson3");
$("#jstree_demo_div").jstree().select_node("ajson4");
仍然选择两个节点。所以它变得像Javascript中的多个选择。
我提出这个问题只是为了确认JSTree的工作是否正确?
我知道在使用deselect_all
函数选择任何节点之前,我可以取消选择所有节点。
但据我说,如果多项选择设置为false,那么从javascript中选择节点也应该只选择一个节点。
如果我错了,请纠正我。
答案 0 :(得分:10)
select_node
设置如何, multiple
都会选择一个节点。
该设置仅限制用户交互,select_node
是一种较低级别的方法,不受限制,因此您(开发人员)可以无限制地以编程方式修改选择。
如果您想使用由用户互动触发的相同功能(因此受multiple
限制),请使用activate_node
。
答案 1 :(得分:2)
只需使用此配置
Button btn = (Button)findviewbyid(R.id.your_button_id)
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.RIGHT_OF, view.getId());
bbtn.setLayoutParams(params);
答案 2 :(得分:0)
'checkbox' : {
'deselect_all': true,
'three_state' : false,
}
工作正常!
答案 3 :(得分:0)
要在JStree中禁用复选框多选,此代码也可以完美运行:
var tmp=null; /// to prevent recursion
treeobj.on("check_node.jstree uncheck_node.jstree", function(e, data) {
if(tmp!=data.node.id){
tmp=data.node.id;
treeobj.jstree("uncheck_all", null);
treeobj.jstree("check_node",data.node.id);
}
})