You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 07:05:25