10

dynatreeプラグインを使用して、複数選択モード(モード3)を使用してチェックボックスツリーを表示しています。

ツリーがajax(遅延読み込みなし)を使用して初期化されると、一部のノードが最初に選択されて読み込まれることを忘れているようです。これらのノードの1つを選択すると、onSelectハンドラーに渡されるフラグの値はtrueになります。つまり、ノードを選択したいと考えます。

チェックボックスをもう一度クリックすると、選択が解除されます。チェックボックスを物理的にクリックするまで、バックグラウンドで選択が登録されていないようです。このノードがすでに選択されているツリーをロードしたい。

ツリーをロードするために使用しているjsonは、私には問題ないように見えます。selectプロパティは、問題のノードであるルートノードに対してtrueです。JSONのスニペットは次のとおりです。

{
"expand":true,
"title":"All",
"isFolder":false,
"key":"0",
"isLazy":false,
"addClass":null,
"select":true,
"unselectable":false,
"children": [... omitted for clarity]
}

アップデート

私はこの方法でツリーをロードしています:

$("#locationsTree").dynatree({
    checkbox: true,
    selectMode: 3,
    initAjax: {
        type: "POST",
        url: dynaTreeInitUrl
    },
    classNames:
    {
        nodeIcon: ""
    }        
});

ここで、dynaTreeInitUrlはjsonを返すURLです。

このようにJSONをハードコーディングすると、次のようになります。

$("#locationsTree").dynatree({
    checkbox: true,
    selectMode: 3,
    children: {
        "expand":true,
        "title":"All",
        "isFolder":false,
        "key":"0",
        "isLazy":false,
        "addClass":null,
        "select":true,
        "unselectable":false,
        "children": [{
            "expand": true,
            "title": "Child",
            "isFolder": false,
            "key": "1",
            "isLazy": false,
            "addClass": null,
            "select": true,
            "unselectable": true,
            "children": []
        }]
    },
    classNames:
    {
        nodeIcon: ""
    }        
});

できます。:/

アップデート:

私はこれが起こっている理由を発見しました:

これはdynatreeのバグです。あるいは、巧妙になりすぎようとしている意図された動作です。

子ノードにunselectable=trueがある場合、親がselect = trueであっても、子がロードされるときに親は選択解除されます。これにより、選択が階層的であるツリーを作成できなくなります。つまり、親が選択された場合にすべての子が自動的に選択され、選択を解除できないようにすることができます。これを別の「モード」としてdynatreeに追加できると思います。

4

2 に答える 2

1

私はこれが起こっている理由を発見しました:

これはdynatreeのバグです。あるいは、巧妙になりすぎようとしている意図された動作です。

子ノードにunselectable=trueがある場合、親がselect = trueであっても、子がロードされるときに親は選択解除されます。これにより、選択が階層的であるツリーを作成できなくなります。つまり、親が選択された場合にすべての子が自動的に選択され、選択を解除できないようにすることができます。これを別の「モード」としてdynatreeに追加できると思います。

于 2013-06-19T20:15:59.267 に答える
0

このコードを使用できます:

onPostInit: function() {
$.map(this.getSelectedNodes(), function(node){
    node.makeVisible();
});

}

Dynatreeは選択したノードの親を展開します

于 2017-04-15T09:56:36.383 に答える