如何获取ej2-treegrid中行拖拽后的新parentId
获取Syncfusion TreeGrid行拖拽后的新父级ID(parentId)
你可以通过TreeGrid内置的rowDrop事件实现这个需求,行拖拽完成后该事件会触发,事件参数包含所有拖拽相关的节点信息:
- 把
rowDrop事件绑定到TreeGrid组件上,绑定方式根据你用的框架(Vue/React/Angular/原生JS)调整即可,比如模板配置事件监听或代码绑定。 - 在事件处理函数里,通过
args参数获取关键节点:args.droppedNode:被拖拽的目标行节点args.targetNode:拖拽落点对应的节点(即新父节点,拖到根层级时为null)args.dropPosition:拖拽位置(Child/Before/After)
根据不同拖拽场景获取新parentId:
代码示例(TypeScript)
function onRowDrop(args: RowDropEventArgs) { let newParentId: string | number | null = null; // 场景1:拖到某节点下作为子节点 if (args.dropPosition === 'Child') { newParentId = args.targetNode ? args.targetNode.id : null; } // 场景2:拖到某节点前后(同级),新父ID和目标节点的父ID一致 else if (args.dropPosition === 'Before' || args.dropPosition === 'After') { newParentId = args.targetNode ? args.targetNode.parentId : null; } // 场景3:拖到根层级 else { newParentId = null; // 根层级父ID可根据业务定义为0或null等 } console.log('拖拽后新的父级ID:', newParentId); // 这里可加入业务逻辑,比如更新数据、提交接口等 }
注意事项
- 替换代码中的
id和parentId为你实际数据模型里的字段名,比如节点ID字段是nodeId、父ID字段是parentNodeId,就对应改成args.targetNode.nodeId和args.targetNode.parentNodeId。 - 纯JavaScript项目去掉类型定义即可,逻辑完全一致。
内容的提问来源于stack exchange,提问作者Joaquín Laks
相关产品推荐
相关产品推荐

