1

コードでdynaTreehttp://wwwendt.de/tech/dynatree/index.htmlを使用し、2レベルのツリーを表示しています。このツリーはで表示されselectMode = 3checkboxesユーザーがノードのチェックボックスをオンにすると、その親はに変わりますgray mode

次の段階で、ユーザーがボタンをクリックすると、選択したすべてのノードがサーバーに送信されて処理されます。私がやりたいのは、すべてのgray modeチェックボックスも送信することです。

どうすればこの目標を達成できますか?

編集:これはあなたが必要とするすべてのコードです

<html>
<head>
    <link type="text/css" href="../css/ui.dynatree.css" rel="stylesheet">
    <script type="text/javascript" src="../js/jquery-1.7.1.min.js"></script>
    <script type="text/javascript" src="../js/jquery-ui-1.8.16.custom.min.js"></script>
    <script type="text/javascript" src="../js/jquery.dynatree.min.js"></script>
    <script type="text/javascript">
        var treeData = [
            { key: "key1", title: "Text 1" },
            { key: "Key2", title: "Text 2",
                children: [
                    { key: "Key2_1", title: "Text 2_1" },
                    { key: "Key2_2", title: "Text 2_2" },
                ]
            },
        ];

        $(function () {
            $("#tree").dynatree({
                checkbox: true,
                selectMode: 3,
                children: treeData,
                imagePath: "../images/Tree/",
                onSelect: function (select, node) {
                    var selKeys = $.map(node.tree.getSelectedNodes(), function (node) {
                        return node.data.key;
                    });
                    $('#textField').val(selKeys.join(", "));
                }
            });
        });
    </script>
</head>
<body>
    <div id="tree"></div>
    <input type="text" id="textField" value="" /><input type="button" id="button" onclick="alert($('#textField').val())" value="Send" />
</body>
</html>

を選択するKey2_1と、Key2に移動するgray stateと、テキストボックスにKey2_1が追加されます。フィールドtextFieldにもKey2を入れたいと思います。textField

注:との両方の子ノードをKey2_1選択Key2_2すると、親(key_2)も選択されますが、親(key_2)が選択されている場合は選択されません。gray mode

4

2 に答える 2

2

dynaTree には、部分的に選択されたノードを探す方法がないようです。別の解決策は、そのようなノードのクラス名を探すことです。部分的に選択されたノードのクラス名が変更されていない場合、デフォルトでは になりますがdynatree-partsel、完全に選択された子を持つノードにはそのクラスも割り当てられているため、クラスに含まれていないノードを選択する必要がありますdynatree-selected

汚い解決策は onSelect メソッドの定義を次のように変更することです:

onSelect: function (select, node) {
    var selKeys = $.map(node.tree.getSelectedNodes(), function (node) {
        return node.data.key;
    });
    var partsel = new Array();
    $(".dynatree-partsel:not(.dynatree-selected)").each(function () {
        var node = $.ui.dynatree.getNode(this);
        partsel.push(node.data.key);
    });
    selKeys = selKeys.concat(partsel);
    $('#textField').val(selKeys.join(", "));
}
于 2012-05-31T07:00:24.840 に答える
0
var parent = node.getParent();
var parentnode = parent.data.key;

変数でparentnodeは、親ノードの値を取得します

于 2016-11-30T10:18:15.450 に答える