找回密码
 立即注册

QQ登录

只需一步,快速开始

TimZhang

中级会员

10

主题

78

帖子

658

积分

中级会员

积分
658
TimZhang
中级会员   /  发表于:2019-4-26 16:27  /   查看:3776  /  回复:4
最近有客户提问,如何根据父节点查询出与其对应的全部子节点。
数据表的结果大致如下:
image.png921780090.png
我们可以看出,每一条记录(ID)都对应着一个上级记录(ParentID),这是现状。
而需求则是:我在页面中选中任意一个(ParentID),都能自动查询出与之对应的(ID),并且查询层级没有限制,直到再也找不出为止。
下面帖几张图,给大家看一下最终效果:
P1.jpg
P2.jpg
P3.jpg
最后,照例将项目源码奉上。
查找任意节点所拥有的全部子节点.fgcc (97.13 KB, 下载次数: 88)

评分

参与人数 1满意度 +5 收起 理由
amtath + 5

查看全部评分

4 个回复

倒序浏览
amtath悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-6-10 20:56:43
沙发
学习下
回复 使用道具 举报
amtath悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-6-10 20:58:45
板凳
  1. // JavaScript source code
  2. var table = Forguncy.Page.getListView("表格1");
  3. var rowCount = table.getRowCount();
  4. var initialData = new Array();
  5. for (var i = 0; i < rowCount; i++)
  6. {
  7.     initialData.push({
  8.         id: parseInt(table.getText(i, 0)),
  9.         pid: parseInt(table.getText(i, 2))
  10.     });
  11. }
  12. var children = new Array();
  13. var getChildren = function(id)
  14. {
  15.     for(var i = 0; i < initialData.length; i++)
  16.     {
  17.         var currentID = initialData[i].id;
  18.         var currentPID = initialData[i].pid;
  19.         if (currentPID == parseInt(id))
  20.         {
  21.             children.push(currentID);
  22.             getChildren(currentID);
  23.         }
  24.     }
  25. }
  26. var index = table.getSelectedRowIndex();
  27. var id = table.getText(index, 0);
  28. getChildren(id);
  29. var cp = Forguncy.Page.getCell("childrenPanel");
  30. cp.setValue(children.toString());
复制代码


回复 使用道具 举报
Joe.xu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2021-6-11 08:48:07
地板

感谢您对活字格的支持。
后面有问题,欢迎继续发新帖交流
回复 使用道具 举报
幻境之光
注册会员   /  发表于:2024-8-30 11:32:17
5#
牛逼的很啊,点击任意一节点获得所有父节点的操作怎么实现啊,大神。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部