在Kendo Hierarchical Datasource中搜索

时间:2014-06-20 10:32:45

标签: jquery kendo-ui hierarchical-data kendo-treeview kendo-datasource

我试图在Kendo Hierarchical Datasource中搜索一个项目。需要获取该项目的uid并使Kendo Treeview上的项目节点以编程方式选择。

这是代码。原谅我的草率算法。

function findTreeviewNodeById(haystack, needle) {
    var uid = null;

    for (var i = 0; i < haystack.length; i++) {
        if (haystack[i].id == needle) {
            uid = haystack[i];
        }
        else if (haystack[i].hasChildren) {
            uid = findTreeviewNodeById(haystack[i].children.data(), needle);
        }

        if (uid != null)
            break;
    }

    return uid;
}

以上代码仅适用于具有2级深度的分层数据源。如果我尝试在到达第3级时使用更深层次的数据源来提供它,则此行haystack [i] .children.data()将返回空子项(它应该不为空)。为什么数据源的第3级是空的?即使Treeview完美地显示了Hierarchical数据源中包含的所有数据。我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:1)

我必须在递归之前调用load()到haystack,以便加载haystack的子节点。

function findTreeviewNodeById(haystack, needle) {
    var uid = null;

    for (var i = 0; i < haystack.length; i++) {
        haystack[i].load();
        if (haystack[i].id == needle) {
            uid = haystack[i];
        }
        else if (haystack[i].hasChildren) {
            uid = findTreeviewNodeById(haystack[i].children.data(), needle);
        }

        if (uid != null)
            break;
    }

    return uid;
}