devExtreme TreeView 展开、滚动和聚焦
devExtreme TreeView Expand, ScrollTo and Focus
是否可以展开树视图,滚动到一个节点并将其集中在一个功能上?
$("#buttonTest").dxButton({
text: "Test",
onClick: function () {
editTreeView.expandItem(editTreeView.element().find(".dx-treeview-item")[0])
var currentNode = $("#editTreeView").find("[data-item-id=" + 80 + "]");
var scrollable = $("#editTreeView").find(".dx-scrollable").dxScrollable("instance");
scrollable.scrollToElement(currentNode);
$("#editTreeView").find(".dx-treeview-node").removeClass("dx-state-focused");
var currentNode = $("#editTreeView").find("[data-item-id=" + 80 + "]");
currentNode.focus().addClass("dx-state-focused");
}
});
在此示例中,树在第一次单击时打开,scrolled/focused 在第二次单击时打开。但是我一键想要它:)
谢谢。
似乎存在与可滚动高度计算相关的问题。您可以使用 setTimeout
函数修复它,如下所示:
$("#buttonTest").dxButton({
text: "Test",
onClick: function () {
//...
setTimeout(function() {
scrollable.scrollToElement(currentNode);
}, 300);
}
});
这个解决方案看起来像 hack,但仍然))
我也创建了 fiddle。
在Angular中对于scrollTo可以做如下操作:
onItemClick(e) {
setTimeout(() => {
e.component._scrollableContainer.scrollToElement(e.itemElement.parentElement.lastChild);
}, 400);
是否可以展开树视图,滚动到一个节点并将其集中在一个功能上?
$("#buttonTest").dxButton({
text: "Test",
onClick: function () {
editTreeView.expandItem(editTreeView.element().find(".dx-treeview-item")[0])
var currentNode = $("#editTreeView").find("[data-item-id=" + 80 + "]");
var scrollable = $("#editTreeView").find(".dx-scrollable").dxScrollable("instance");
scrollable.scrollToElement(currentNode);
$("#editTreeView").find(".dx-treeview-node").removeClass("dx-state-focused");
var currentNode = $("#editTreeView").find("[data-item-id=" + 80 + "]");
currentNode.focus().addClass("dx-state-focused");
}
});
在此示例中,树在第一次单击时打开,scrolled/focused 在第二次单击时打开。但是我一键想要它:)
谢谢。
似乎存在与可滚动高度计算相关的问题。您可以使用 setTimeout
函数修复它,如下所示:
$("#buttonTest").dxButton({
text: "Test",
onClick: function () {
//...
setTimeout(function() {
scrollable.scrollToElement(currentNode);
}, 300);
}
});
这个解决方案看起来像 hack,但仍然))
我也创建了 fiddle。
在Angular中对于scrollTo可以做如下操作:
onItemClick(e) {
setTimeout(() => {
e.component._scrollableContainer.scrollToElement(e.itemElement.parentElement.lastChild);
}, 400);