jstree initial_select和initial_open

时间:2013-10-10 13:08:51

标签: jstree

使用jstree时,下面的代码行会引发链接中提到的异常 http://code.google.com/p/jstree/issues/detail?id=294

**"ui" : { "initially_select" : [ quotedAndCommaSeparated ] }**
**"core" : { "animation" : 0, "initially_open" : [ quotedAndCommaSeparated ] }** 

如果我使用如下所示的硬编码值,则无任何问题。

"ui" : { "initially_select" : ['3381','7472','7473','7474','7247','7248','7249','3273','3272'] }

"core" : { "animation" : 0, "initially_open" : [ '3381','7472','7473','7474','7247','7248','7249','3273','3272' ] }

我已经从数组中形成了quotedAndCommaSeparated,它与上面的硬编码值相同。但问题仍未得到解决。请建议。

quotedAndCommaSeparated = '3381','7472','7473','7474','7247','7248','7249','3273','3272'

完整的参考代码:

For Scripts:

static.jstree.com/v.1.0pre/jquery.jstree.js
static.jstree.com/v.1.0pre/_docs/syntax/!script.js

function BindTreeView(nodeToHighlight, isInitialLoad)
    {    
        var initiallySelect = [];
        var searchOption = 0;
        if($('#rbobtnSelectedLevelAndBelowRadio:checked').val() == 'Selected Level and Below')
            searchOption = 1;
        else if($('#rdobtnCurrentOrganization:checked').val() == 'Current Organization')
            searchOption = 2;

        if(searchOption == 0)
            initiallySelect.push(nodeToHighlight);
        else if (searchOption == 1 || searchOption == 2)
        {
            var grid = $("#SearchResultJQGrid");
            ids = grid.jqGrid("getDataIDs");
            if(ids && ids.length > 0)
            {
                for(var iRow = 1; iRow < ids.length; iRow++)
                {
                    var dataRow = $("#SearchResultJQGrid").getRowData(iRow);
                    var companyId = dataRow.CompanyID;
                    initiallySelect.push(companyId);
                }
            }   
        }

        var quotedAndCommaSeparated = "'" + initiallySelect.join("','") + "'";
        var urlRef = '/Group/GetDataForTreeView';

        $('#TreeView').jstree({
                                "json_data" : {  
                                    "ajax" : {
                                    "cache": false,  
                                    "url": function (node) {
                                                var nodeId = "";
                                                if (node == -1)
                                                    url = urlRef;
                                                return url;
                                            },                                          
                                    "data" : function (n) {  
                                                return { id : n.attr ? n.attr("id") : 0 };   
                                        }
                                    }  
                                }, 
                                "ui" : { "initially_select" : [ quotedAndCommaSeparated ] },
                                "core" : { "animation" : 0, "initially_open" : [ quotedAndCommaSeparated ] }, 
                                "themes": {
                                            "theme": "classic",
                                            "dots": true,
                                            "icons": false
                                          },
                                "plugins" : [ "themes", "json_data", "ui", "core" ]  
                                }).bind("select_node.jstree", function (event, data)                  {                                                                                                                                          if(isInitialLoad == true)        
                                                    isInitialLoad = false;
                                                else
                                                    BindGridView('CV', data.rslt.obj.attr("name"), data.rslt.obj.attr("id"), isInitialLoad);
        });     
    }

1 个答案:

答案 0 :(得分:0)

你的错误是quotedAndCommaSeparated不是一个列表,它只是一个字符串。

您只需在initialSelect列表中添加字符串而不是数字

initiallySelect.push(companyId + "");

然后你可以直接在jstree init

中使用它
"ui" : { "initially_select" : [ initiallySelect ] },

希望有所帮助。