使用Kendo的可分页树视图?

时间:2013-05-01 13:24:03

标签: kendo-ui

假设我有分层数据,我在树视图中显示。特定节点可能有1000个子节点,我不想全部显示它们,所以我想要在树中分页节点。我会显示10个孩子,如果有更多,用户需要点击下一个/上一个按钮才能看到它们。我有sql分页工作,但我不能让treeview做我想要的。

如果我这样做,我的控制器会获得正确的节点ID和页面ID,并返回正确的结果页面。但是树视图只显示我刚要求的1页儿童;层次结构的其余部分(所有父母)都丢失了:

$("#btnNextPage")
    .click(function () {
        var selectedNode = treeview.select();
        var selectedNodeID = treeview.dataItem(selectedNode).id;
        ds.read({
            LoopID: selectedNodeID,
            page: ds.page() + 1
});

如果我这样做,我可以保持层次结构,我的控制器被调用,但我无法弄清楚如何传递我正在请求的页面。

$("#btnNextPage")
    .click(function () {
        var selectedNode = treeview.select();
        var testnode = treeview.dataItem(selectedNode);
        testnode.loaded(false);
        testnode.load();
});

我一直在使用ASP.NET webforms,这是我第一次涉足jquery和kendo。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

当您更改页面时,Kendo DataSource会使用从服务器检索到的新页面替换其在内存中的记录。

您需要将所有先前加载的页面保留在单独的可观察数组中,并将树视图绑定到该视图。

答案 1 :(得分:0)

使用来自Telerik的人的指针,我得到了这个工作。诀窍是使用children属性,它是所选节点的子节点的数据源。因此,当单击下一页按钮时,我这样做:

parentNodeDataItem.children.read({ LoopID: parentNodeID, page: currentPage });

这产生了我想要的行为,这是为了让孩子们在不丢失祖先等级的情况下进行刷新。