0

取引先レコードのツリービューを作成したいと考えています。そこで、ダイナツリーを使用してツリー ビューを作成しました。正常に動作しています。次に、検索機能を実装したいと思います。

JavaScript を使用して Visulforce ページで Dynatree フィルターを作成する方法。

テキストフィールドから検索してツリーを並べ替えたい。

フィルターの次のコードを見つけましたが、これを使用する方法がわかりません。コードの下のどこを使用すればよいか教えてください。

コードスニペット:

DynaTreeNode.prototype.search = function(pattern){

    if(pattern.length < 1 && !clear){
        clear = true;
        this.visit(function(node){
            node.expand(true);
            node.li.hidden = false;
            node.expand(false);
        });
    } else if (pattern.length >= 1) {
        clear = false;
        this.visit(function(node){
            node.expand(true);
            node.li.hidden = false;
        });

        for (var i = 0; i < this.childList.length; i++){
            var hide = {hide: false};
            this.childList[i]._searchNode(pattern, hide);
        }
    } 
},
4

1 に答える 1

0

以下の関数を使用して、検索用語に基づいて除外できます。

<input type="text" onchange="filterNodes(this.value);return false;" />

function filterNodes(searchTerm) {
        // Only show nodes matching the specified search term
        var startNode = $("#divTree").dynatree("getRoot");
        startNode.visit(function(node) {
            if (node.isVisible() && node.data.title) {
                // Filter currently visible non-root nodes.
                if (node.data.title.indexOf(searchTerm) >= 0) {
                    // Make sure we and all our parents are visible
                    node.visitParents(function(node) {
                        $(node.li).show();
                        return (node.parent != null);
                    }, true);
                    // Terminate the traversal of this branch since the node matches
                    return 'skip';
                }
                else {
                    // Hide the node.
                    $(node.li).hide();
                }
            }
        });
    }

これにより、一致するノードが 1 つ見つかった場合、ブランチ全体がフィルタリングされます。

于 2015-05-08T09:09:50.920 に答える