共有36079人关注过本帖树形打印复制链接主题:[免费分享]给狐表的递归教程加上死循环判断,防止死递归导致内存溢出,软件退出。建议官方整合到帮助文档里,类似于增强版例子 |
---|
![]() chen37280600 |
小大 1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC | |||
![]() ![]() ![]() ![]() 等级:六尾狐 帖子:1280 积分:7975 威望:0 精华:4 注册:2017/12/31 14:53:00 |
[免费分享]给狐表的递归教程加上死循环判断,防止死递归导致内存溢出,软件退出。建议官方整合到帮助文档里,类似于增强版例子 ![]()
![]() ![]() 总体思路: 基于官方的递归文档案例,适当修改代码,可以判断出递归死循环的路线,及时停止(思路来自最新版Bom目录树玩法) ①每条分支,都不应该重复利用主键 ②不同分支,可以重复利用主键,毕竟bom会重复利用 所以:在每条分支,都用一个空白的字典,记录主键,保持不重复。如果重复,就遍历出来展示告知用户 递归开始的代码: Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1") Dim nd As WinForm.TreeNode Dim dt As DataTable = DataTables("表A") tr.StopRedraw() tr.Nodes.Clear tr.Nodes.Add("全部") Dim dgDic As New Dictionary(of String,String)'递归记录,防止死循环 For Each dr As DataRow In dt.datarows If dr.IsNull("父键") Then nd = tr.Nodes.Add(dr("键"),dr("标题")) Functions.Execute("AddChildren",nd,dt,dgDic) End If dgDic.Clear '一条递归用一套记录 Next tr.ResumeRedraw() 内部函数: 以下内容只有回复后才可以浏览 ===================================================================== 杰哥免费分享的web系统 =============================================================== 顺便总结以前分享过的帖子,方便大家学习 联系QQ:2385350359 经验分享: [此贴子已经被作者于2024/6/5 18:05:03编辑过]
|
|||
![]() |
![]() chen37280600 |
小大 2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC | |
![]() ![]() ![]() ![]() 等级:六尾狐 帖子:1280 积分:7975 威望:0 精华:4 注册:2017/12/31 14:53:00 |
![]() |
|
![]() |