Nirav Kamani
Nirav Kamani

Reputation: 3272

Disable Multiple Selection in JSTree is not working

I am using JSTree in my application with following code.

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" },
            ]
        }
    });
}

As shown in my code i am trying to disable multiple selection.

Now when i use following code to select node.

$("#jstree_demo_div").jstree().select_node("ajson3");
$("#jstree_demo_div").jstree().select_node("ajson4");

Still it select both node. So it becomes like multiple selection from Javascript.

I am putting this question just to confirm that is it correct working of JSTree?

I know that i can deselect all node before selecting any node using deselect_all function.

But according to me if multiple selection is set to false then selecting node from javascript also should select only one node.

Please correct me if i am wrong.

Upvotes: 13

Views: 14459

Answers (4)

Ali Esmaeili
Ali Esmaeili

Reputation: 542

To Disable checkbox multi-select in JStree this code also work perfectly :

   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);
                    }
                })

Upvotes: 0

WEBGONDEL UG
WEBGONDEL UG

Reputation: 147

'checkbox' : {            
 'deselect_all': true,
 'three_state' : false, 
}

works fine!

Upvotes: 1

just use this configuration

this.CreateTreeView = function () {

    **"plugins" : [
                "checkbox",  
            ],**  

    $('#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" },
            ]
        },

        **'checkbox' : {            
            'deselect_all': true,
             'three_state' : false, 
        }**

    }); }

Upvotes: 5

vakata
vakata

Reputation: 3886

select_node will select a node regardless of the multiple setting.

The setting only limits user interaction, select_node is a lower level method and will not be limited, so you (the developer) can modify the selection programmatically without limitation.

If you want to use the same function that is triggered by user interaction (and is therefore limited by multiple) use activate_node.

Upvotes: 16

Related Questions