假设我有分层数据,我在树视图中显示。特定节点可能有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。有什么想法吗?
答案 0 :(得分:0)
当您更改页面时,Kendo DataSource会使用从服务器检索到的新页面替换其在内存中的记录。
您需要将所有先前加载的页面保留在单独的可观察数组中,并将树视图绑定到该视图。
答案 1 :(得分:0)
使用来自Telerik的人的指针,我得到了这个工作。诀窍是使用children属性,它是所选节点的子节点的数据源。因此,当单击下一页按钮时,我这样做:
parentNodeDataItem.children.read({
LoopID: parentNodeID,
page: currentPage
});
这产生了我想要的行为,这是为了让孩子们在不丢失祖先等级的情况下进行刷新。