igTree(Infragistics IgniteUI)拖拽后无法捕获节点更新顺序求方案
解决IgniteUI igTree拖拽后捕获勾选节点顺序的问题
我之前也碰到过类似的情况,在2018.1版本的igTree里,确实没有直接对应拖拽后勾选节点顺序变化的专属事件,但我们可以通过组合现有事件和API来实现需求:
- 绑定
nodeDragDrop事件:这个事件会在节点拖拽完成并成功放置后触发,正好对应你需要捕获拖拽完成时机的场景。 - 调用
checkedNodes()方法获取最新顺序:在nodeDragDrop的事件处理函数里,调用igTree的checkedNodes()方法,它会返回当前所有处于勾选状态的节点,并且是按照树的当前渲染顺序(也就是拖拽后的新顺序)排列的,和你在nodeCheckStateChanged事件里拿到的newCheckedNodes效果一致。
下面是具体的代码示例:
// 初始化igTree时配置事件 $("#yourTreeId").igTree({ // 你的树配置项(数据源、拖拽启用等) enableDragAndDrop: true, // 确保拖拽功能已开启 nodeDragDrop: function(evt, ui) { // 拖拽完成后获取更新后的勾选节点顺序 const updatedCheckedNodes = $("#yourTreeId").igTree("checkedNodes"); // 这里可以对updatedCheckedNodes进行后续处理,比如保存顺序、同步到其他组件等 console.log("拖拽后更新的勾选节点顺序:", updatedCheckedNodes); }, // 保留你原来的nodeCheckStateChanged事件 nodeCheckStateChanged: function(evt, ui) { console.log("勾选状态变化后的节点顺序:", ui.newCheckedNodes); } });
需要注意的是,checkedNodes()方法会实时遍历树的当前节点结构,所以它能准确反映拖拽后的节点顺序变化,完全可以替代你需要的拖拽后勾选节点顺序捕获需求。
内容的提问来源于stack exchange,提问作者Deepak Kothari
相关产品推荐
相关产品推荐

