1

1000 を超えるノード (サブノードを含む) をダイナツリーにロードし、各ノードのチェック ボックスを使用して選択しています。

しかし、デモhttp://wwwendt.de/tech/dynatree/doc/sample-select.htmlのようにすべてを選択またはすべて選択解除すると、非常に遅くなり、ブラウザが 10 秒間ハングします。

修正はありますか?

編集:ツリーには 6 ~ 8 のレベルがネストされています。各レベルには約 5 ~ 10 個のノードがあります。

更新されたコード

 <a href="#" id="select-all">select all</a>
 <div id="echoSelection"></div>
 <div id="my-tree"></div>

 $('#select-all').click(function(){
    alert($("#my-tree").dynatree("getRoot").length);
    $("#my-tree").dynatree("getRoot").visit(function(node){
            node.select(false);
        });
     return false;

});

 $("#my-tree").dynatree({
        initAjax: {
            url: 'jsonData.aspx',
            data: { type: "all" }
        },
        checkbox: true,
        selectMode: 3,
        onSelect: function (select, node) {
            // Display list of selected nodes
            var selNodes = node.tree.getSelectedNodes();
            // convert to title/key array
            var selKeys = $.map(selNodes, function (node) {
                return "[" + node.data.key + "]: '" + node.data.title + "'";
            });
            $("#echoSelection2").text(selKeys.join(", "));
        },
        onClick: function (node, event) {
            // We should not toggle, if target was "checkbox", because this
            // would result in double-toggle (i.e. no toggle)
            if (node.getEventTargetType(event) == "title")
                node.toggleSelect();
        },
        onKeydown: function (node, event) {
            if (event.which == 32) {
                node.toggleSelect();
                return false;
            }
        },

        fx: { height: "toggle", duration: 200 },
        autoCollapse: true
    });
}

JSON 形式のサンプル

[
{"title":"Node 1","isFolder":false,"isLazy":false,"key":"1","icon":null,"prevNode":0,"nextNode":0,"children":[{"title":"Node 6","isFolder":false,"isLazy":false,"key":"6","icon":null,"prevNode":0,"nextNode":0,"children":[],"tooltip":null,"addClass":null,"expand":false,"MetaData":null}],"tooltip":null,"expand":false,"MetaData":null},{"title":"Node 2","isFolder":false,"isLazy":false,"key":"2","icon":null,"prevNode":0,"nextNode":0,"children":[],"tooltip":null,"expand":false,"MetaData":null},{"title":"Node 3","isFolder":false,"isLazy":false,"key":"3","icon":null,"prevNode":0,"nextNode":0,"children":[],"tooltip":null,"expand":false,"MetaData":null}]
4

1 に答える 1

0

遅延ロードを試すことができます。ここに例があり ます http://www.gehbeez.com/dynatree-lazy-load-example-with-asp-net/

于 2013-12-20T20:52:58.523 に答える