dorado框架下动态刷新数据树的JS实现方案

作者:小括号

时间:2026-10-23

浏览:409

本文介绍在dorado框架中通过JavaScript动态刷新数据树的完整流程。代码首先启用加载提示并定位根节点,随后清空主数据集并异步刷新临时数据集。在异步回调中,遍历临时数据集记录以构建第一层节点,并调用flushThirdLevelNode处理第三层邮件箱节点的展开与添加,同时包含完善的异常捕获与控制台状态管理。

文章目录

数据树刷新主流程实现

定义函数 flushDataTree() 以执行数据树的刷新逻辑。


{

调用 dataset_mainMenuTemp.setShowLoadingTip(true) 启用加载提示,告知用户数据正在处理中。


通过 tree_Menu.getFirstRootNode() 获取数据树的第一个根节点,并赋值给变量 rootNode。


使用 tree_Menu.setCurrentNode(rootNode) 将当前选中节点设置为根节点。


调用 tree_Menu.expandNode(rootNode) 展开根节点,确保其子节点可见。


执行 dataset_mainMenu.clearData() 清空主数据集 mainMenu 中的所有现有数据。


调用 dataset_mainMenuTemp.flushData() 刷新临时数据集 mainMenuTemp 的数据。


调用 dataset_mainMenuTemp.flushDataAsync(function(succeed) 异步刷新临时数据集,并传入成功回调函数。


{

在回调函数内部,首先检查 succeed 参数,若刷新失败则直接返回,不执行后续操作。


调用 dataset_mainMenuTemp.disableControls() 禁用临时数据集的控制功能,防止在数据处理期间发生冲突。


开始 try 代码块,用于捕获可能发生的异常。


调用 dataset_mainMenuTemp.moveFirst() 将临时数据集的记录指针移动到第一条记录。


使用 while (!dataset_mainMenuTemp.isLast()) 循环遍历临时数据集中的所有记录,直到最后一条。


{

在循环内部,通过 var record=dataset_mainMenuTemp.getCurrent() 获取当前记录对象。


实例化一个新的 RecordTreeNode 节点,传入当前记录 record 以及通过 rootNode.getTreeLevel().getTreeLevel("level_menu") 获取的层级信息。


调用 rootNode.addNode(node) 将新创建的节点添加到根节点下,构建第一层子节点。


调用 dataset_mainMenuTemp.moveNext() 将记录指针移动到下一条记录,继续循环。


}

结束 try 块,进入 catch(e) 异常处理部分。


{

在 catch 块中,使用 alert(e.message) 弹出错误信息,提示用户操作失败的具体原因。


}

进入 finally 块,确保无论成功或失败都执行清理操作。


调用 dataset_mainMenuTemp.enableControls() 重新启用临时数据集的控制功能。


调用 flushThirdLevelNode() 函数,以处理第三层节点(如邮件箱)的刷新与展开逻辑。


}
});
}

第三层节点处理与展开逻辑

定义内部函数 flushThirdLevelNode(),专门用于处理特定层级的节点数据。


开始 try 代码块,用于处理第三层节点时的异常捕获。


调用 dataset_myMailBox.parameters().setValue("myBoxCoding","box03") 设置邮件箱数据集的参数,指定编码为 box03。


调用 dataset_myMailBox.flushData() 刷新邮件箱数据集,获取最新数据。


添加注释说明接下来将展开当前节点。


调用 getCurrentNodeNum(3) 获取当前节点编号,并赋值给变量 currentNode,用于定位第三层节点。


调用 tree_Menu.expandNode(currentNode) 展开当前节点,使其子节点可见。


添加注释说明接下来将向数据集中新增一条节点数据。


调用 dataset_myMailBox.disableControls() 禁用邮件箱数据集的控制功能,防止数据处理冲突。


调用 dataset_myMailBox.moveFirst() 将邮件箱数据集的记录指针移动到第一条记录。


使用 while (!dataset_myMailBox.isLast()) 循环遍历邮件箱数据集中的所有记录。


{

在循环内部,通过 record=dataset_myMailBox.getCurrent() 获取当前记录对象。


实例化一个新的 RecordTreeNode 节点,传入当前记录 record 以及通过 currentNode.getTreeLevel().getTreeLevel("level_myMailBox") 获取的层级信息。


添加注释说明正在新增节点。


调用 currentNode.addNode(node) 将新创建的节点添加到当前节点下,构建第三层子节点。


调用 dataset_myMailBox.moveNext() 将记录指针移动到下一条记录,继续循环。


}

结束 try 块,进入 catch(e) 异常处理部分。


{

在 catch 块中,使用 alert(e.message) 弹出错误信息,提示用户第三层节点处理失败的原因。


进入 finally 块,确保无论成功或失败都执行清理操作。


调用 dataset_myMailBox.enableControls() 重新启用邮件箱数据集的控制功能,完成刷新流程。


}
}

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章