1

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

如果我这样做,我的控制器会获得正确的节点 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 网络表单,这是我第一次涉足 jquery 和 kendo。有任何想法吗?

4

2 回答 2

0

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

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

于 2013-05-02T03:32:45.200 回答
0

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

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

这产生了我想要的行为,即在不丢失祖先层次结构的情况下刷新孩子。

于 2013-05-06T18:56:11.150 回答