CN105468365A - 一种解决树控件节点数量限制的方法 - Google Patents
一种解决树控件节点数量限制的方法 Download PDFInfo
- Publication number
- CN105468365A CN105468365A CN201510805867.9A CN201510805867A CN105468365A CN 105468365 A CN105468365 A CN 105468365A CN 201510805867 A CN201510805867 A CN 201510805867A CN 105468365 A CN105468365 A CN 105468365A
- Authority
- CN
- China
- Prior art keywords
- node
- tree control
- data
- node data
- son
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明一种解决树控件节点数量限制的方法,通过分批次异步加载节点数据,提高了树节点数据加载的成功率,降低了由于树控件节点数据加载失败而导致的一系列故障;通过动态加载可见区域的节点数据并移除非可见区的节点数据,有效降低了树控件对操作系统内存、CPU等资源的消耗,提高了操作系统资源的利用率,解决了树控件过度消耗操作系统资源而导致界面卡死等问题,从而根本性地突破树控件对节点数量的限制。
Description
技术领域
本发明涉及一种解决树控件节点数量限制的方法。
背景技术
在计算机软件界面的设计中,经常要使用到树控件来展现一些有层级关系的数据。传统的树控件采用同步加载,并一次性加载所有的节点数据进行展现。随着系统数据量逐步增长,当一个树控件的节点数达到上万甚至更多时,传统的树控件就会遇到数据无法从后台成功加载、数据节点过多导致界面卡死甚至整个界面崩溃等问题。而由于树控件节点数量瓶颈的存在,严重制约着软件界面设计的发展。
发明内容
本发明的目的在于提供一种解决树控件节点数量限制的方法,解决树控件在节点数量多的情况下,无法从后台加载数据且前端展现卡死问题。
本发明一种解决树控件节点数量限制的方法,包括如下步骤:
步骤1、当软件界面刚展现时,树控件只显示根节点,当用户点击根节点时,通过异步方式向系统后台获取所有的下级子节点数据,分批加载子节点数据,然后,将加载到的子节点数据缓存到本地数组中,最后根据树控件上当前处于可见区域并处于展开状态的节点,从本地数组中读取对应的子节点数据并渲染到树控件上展现;
步骤2、树控件只留下处于可见区域并且处于展开状态下的节点数据,其余的节点数据一旦处于隐藏或收缩后的状态,立即自动移除,如果树控件的滚动条滑动到节点使之可见时,程序将自动加载该可见节点的节点数据,同时把离开可见区域的节点数据移除。
所述的步骤1具体实现方式为:
前端传递父节点ID参数给后台,后台检索出父节点ID下有N个子节点数据,该N个子节点数据分M批返回给前端;
前端把接收到的节点数据,按层级关系存储到本地数组中,根据树控件上当前处于可见区域并处于展开状态的节点,从本地数组中读取对应的子节点数据并渲染到树控件上展现。
本发明采用分批次异步加载方法来解决后台树控件无法一次性加载成功的问题。具体方法为:当软件界面刚刚展现时,树控件只显示根节点,而不是展现所有的节点,当用户点击根节点时,通过异步方式向系统后台获取下级节点数据,同时为了确保节点数据能成功加载,把传统的一次性加载改为分批加载。例如:某节点下有10000个了节点,一次性加载可能会加载失败,现在可以改分为10次自动加载,每次加载1000条数据。然后,将加载到的数据缓存到本地数组,最后从数组里面读取子节点数据并渲染到树控件上展现。
本发明通过动态加载可见区域的节点数据并移除非可见区的节点数据,来解决树控件节点数量多时,界面卡死问题。树控件的每个节点都需要消耗一定的内存和CPU。当树控件的节点数量达到一定量时,操作系统的内存、CPU等资源将会被消耗完。此时软件界面就会出现卡死、甚至整个界面崩溃等问题。本发明的树控件只留下处于可见区域并且处于展开状态下的节点数据,其余的节点数据一旦处于隐藏或收缩后的状态,立即自动移除。比如树控件下有A、B、C、D、E等五个节点,而展现在界面的可见区域只有A和B两个节点,且A和B两节点处于展开状态,此时将自动移除掉不可见的C、D、E的节点数据;如果树控件的滚动条滑动到C节点可见时,程序将自动加载C节点的数据,同时把离开可见区的节点数据移除。由此可减少整个树控件对计算机资源的消耗,即能提高计算机资源的有效利用率,同时可解决树控件卡死的问题,从而根本性地突破树控件对节点数量的限制。
具体实施方式
本发明中树控件具有后台服务和前端展现两个子功能,后台负责给前端展现提供节点数据,前端负责接收来自后台的节点数据并展现;树控件的每个节点有一个ID值,此节点ID作为树节点的唯一标识。
本发明一种解决树控件节点数量限制的方法,具体包括如下步骤:
步骤1、当软件界面刚展现时,树控件只显示根节点,当用户点击根节点时,通过异步方式向系统后台获取所有的下级子节点数据,分批加载子节点数据,然后,将加载到的子节点数据缓存到本地数组中,最后根据树控件上当前处于可见区域并处于展开状态的节点,从本地数组中读取对应的子节点数据并渲染到树控件上展现:
前端传递父节点ID参数给后台,后台检索出父节点ID下有N个子节点数据,假定检索到10000个子节点,假定后台每批次返回给前端1000个子节点,即所有的子节点数据分为10批次返回给前端;
前端把接收到的节点数据,按层级关系存储到本地数组中,假定本地数组下存储的数据有[A,B,C,D,E]五个节点数据;
假定树控件当前可见的节点有A和B两个,且A和B两个节点都处于展开的状态,此时树控件将从数组里读取A和B两个节点的数据,并渲染到树控件上展现;
步骤2、树控件只留下处于可见区域并且处于展开状态下的节点数据,其余的节点数据一旦处于隐藏或收缩后的状态,立即自动移除,如果树控件的滚动条滑动到节点使之可见时,程序将自动加载该可见节点的节点数据,同时把离开可见区域的节点数据移除:
当树控件的滚动条滑动至C和D节点时,随着滚动条的滑动,A和B两节点由可见状态变为不可见状态,此时树控件自动把A和B两节点的数据从树控件上移除,同时又从数组中读取C和D的节点数据并渲染到树控件上展现;若树控件的滚动条重新滑动到B节点时,此时树控件又从数组中读取B节点的数据进行展现,同时把变为隐藏状态的所有节点数据从树控件上移除,滚动条至B节点可见时,树控件又重新加载B节点的数据展现,并移除掉变为不可见状态的D节点数据,以后的操作流程依此类推。
本发明通过分批次异步加载节点数据,提高了树节点数据加载的成功率,降低了由于树控件节点数据加载失败而导致的一系列故障;通过动态加载可见区域的节点数据并移除非可见区的节点数据,有效降低了树控件对操作系统内存、CPU等资源的消耗,提高了操作系统资源的利用率,解决了树控件过度消耗操作系统资源而导致界面卡死等问题,从而根本性地突破树控件对节点数量的限制。
以上所述,仅是本发明较佳实施例而已,并非对本发明的技术范围作任何限制,故凡是依据本发明的技术实质对以上实施例所作的任何细微修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (2)
1.一种解决树控件节点数量限制的方法,其特征在于包括如下步骤:
步骤1、当软件界面刚展现时,树控件只显示根节点,当用户点击根节点时,通过异步方式向系统后台获取所有的下级子节点数据,分批加载子节点数据,然后,将加载到的子节点数据缓存到本地数组中,最后根据树控件上当前处于可见区域并处于展开状态的节点,从本地数组中读取对应的子节点数据并渲染到树控件上展现;
步骤2、树控件只留下处于可见区域并且处于展开状态下的节点数据,其余的节点数据一旦处于隐藏或收缩后的状态,立即自动移除,如果树控件的滚动条滑动到节点使之可见时,程序将自动加载该可见节点的节点数据,同时把离开可见区域的节点数据移除。
2.根据权利要求1所述的一种解决树控件节点数量限制的方法,其特征在于步骤1具体实现方式为:
前端传递父节点ID参数给后台,后台检索出父节点ID下有N个子节点数据,该N个子节点数据分M批返回给前端;
前端把接收到的节点数据,按层级关系存储到本地数组中,根据树控件上当前处于可见区域并处于展开状态的节点,从本地数组中读取对应的子节点数据并渲染到树控件上展现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510805867.9A CN105468365B (zh) | 2015-11-20 | 2015-11-20 | 一种解决树控件节点数量限制的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510805867.9A CN105468365B (zh) | 2015-11-20 | 2015-11-20 | 一种解决树控件节点数量限制的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105468365A true CN105468365A (zh) | 2016-04-06 |
CN105468365B CN105468365B (zh) | 2021-04-23 |
Family
ID=55606108
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510805867.9A Active CN105468365B (zh) | 2015-11-20 | 2015-11-20 | 一种解决树控件节点数量限制的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105468365B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106325885A (zh) * | 2016-08-31 | 2017-01-11 | 北京深思数盾科技股份有限公司 | 海量数据显示方法及装置 |
CN107608664A (zh) * | 2017-09-22 | 2018-01-19 | 国云科技股份有限公司 | 一种使用zTree加载大量数据的方法 |
CN108108435A (zh) * | 2017-12-19 | 2018-06-01 | 中国航天科工集团第四研究院第四总体设计部 | 一种用于航天产品结构树的前端快速显示方法 |
CN108271060A (zh) * | 2016-12-30 | 2018-07-10 | 深圳市优朋普乐传媒发展有限公司 | 一种列表加载方法及装置 |
CN109343753A (zh) * | 2018-08-08 | 2019-02-15 | 北京大数据研究院 | 数据显示方法及装置 |
CN109582380A (zh) * | 2017-09-26 | 2019-04-05 | 北京国双科技有限公司 | 一种节点处理方法和装置、存储介质、处理器 |
CN112434030A (zh) * | 2020-11-11 | 2021-03-02 | 上海芯翌智能科技有限公司 | 基于树形结构数据的高性能列表实现方法与设备 |
CN113396381A (zh) * | 2019-02-08 | 2021-09-14 | 株式会社工程师论坛 | 树信息提供装置及树信息提供用程序产品 |
CN114237578A (zh) * | 2021-11-05 | 2022-03-25 | 芯华章科技股份有限公司 | 显示逻辑系统设计的目标模块的方法及相关设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1856765A (zh) * | 2003-09-22 | 2006-11-01 | 皇家飞利浦电子股份有限公司 | 通过所显示的分层数据结构导航 |
CN101408877A (zh) * | 2007-10-10 | 2009-04-15 | 英业达股份有限公司 | 树节点加载系统及其方法 |
CN101593070A (zh) * | 2008-05-30 | 2009-12-02 | 国际商业机器公司 | 对大量信息进行可视化的方法和设备 |
US7873965B2 (en) * | 2000-12-12 | 2011-01-18 | Citrix Systems, Inc. | Methods and apparatus for communicating changes between a user-interface and an executing application, using property paths |
CN102999608A (zh) * | 2012-11-21 | 2013-03-27 | 用友软件股份有限公司 | 大数据的树表展现系统和树表展现方法 |
US20130151565A1 (en) * | 2011-12-08 | 2013-06-13 | Xerox Corporation | Arithmetic node encoding for tree structures |
CN103853729A (zh) * | 2012-11-29 | 2014-06-11 | 腾讯科技(深圳)有限公司 | 页面加载方法及其系统 |
CN104063381A (zh) * | 2013-03-19 | 2014-09-24 | 华为技术有限公司 | 多级树形菜单的显示方法和终端 |
US9037599B1 (en) * | 2007-05-29 | 2015-05-19 | Google Inc. | Registering photos in a geographic information system, and applications thereof |
-
2015
- 2015-11-20 CN CN201510805867.9A patent/CN105468365B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7873965B2 (en) * | 2000-12-12 | 2011-01-18 | Citrix Systems, Inc. | Methods and apparatus for communicating changes between a user-interface and an executing application, using property paths |
CN1856765A (zh) * | 2003-09-22 | 2006-11-01 | 皇家飞利浦电子股份有限公司 | 通过所显示的分层数据结构导航 |
US9037599B1 (en) * | 2007-05-29 | 2015-05-19 | Google Inc. | Registering photos in a geographic information system, and applications thereof |
CN101408877A (zh) * | 2007-10-10 | 2009-04-15 | 英业达股份有限公司 | 树节点加载系统及其方法 |
CN101593070A (zh) * | 2008-05-30 | 2009-12-02 | 国际商业机器公司 | 对大量信息进行可视化的方法和设备 |
US20130151565A1 (en) * | 2011-12-08 | 2013-06-13 | Xerox Corporation | Arithmetic node encoding for tree structures |
CN102999608A (zh) * | 2012-11-21 | 2013-03-27 | 用友软件股份有限公司 | 大数据的树表展现系统和树表展现方法 |
CN103853729A (zh) * | 2012-11-29 | 2014-06-11 | 腾讯科技(深圳)有限公司 | 页面加载方法及其系统 |
CN104063381A (zh) * | 2013-03-19 | 2014-09-24 | 华为技术有限公司 | 多级树形菜单的显示方法和终端 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106325885A (zh) * | 2016-08-31 | 2017-01-11 | 北京深思数盾科技股份有限公司 | 海量数据显示方法及装置 |
CN108271060A (zh) * | 2016-12-30 | 2018-07-10 | 深圳市优朋普乐传媒发展有限公司 | 一种列表加载方法及装置 |
CN107608664A (zh) * | 2017-09-22 | 2018-01-19 | 国云科技股份有限公司 | 一种使用zTree加载大量数据的方法 |
CN109582380A (zh) * | 2017-09-26 | 2019-04-05 | 北京国双科技有限公司 | 一种节点处理方法和装置、存储介质、处理器 |
CN108108435A (zh) * | 2017-12-19 | 2018-06-01 | 中国航天科工集团第四研究院第四总体设计部 | 一种用于航天产品结构树的前端快速显示方法 |
CN109343753A (zh) * | 2018-08-08 | 2019-02-15 | 北京大数据研究院 | 数据显示方法及装置 |
CN113396381A (zh) * | 2019-02-08 | 2021-09-14 | 株式会社工程师论坛 | 树信息提供装置及树信息提供用程序产品 |
CN113396381B (zh) * | 2019-02-08 | 2023-11-28 | 株式会社工程师论坛 | 树信息提供装置及存储介质 |
CN112434030A (zh) * | 2020-11-11 | 2021-03-02 | 上海芯翌智能科技有限公司 | 基于树形结构数据的高性能列表实现方法与设备 |
CN114237578A (zh) * | 2021-11-05 | 2022-03-25 | 芯华章科技股份有限公司 | 显示逻辑系统设计的目标模块的方法及相关设备 |
CN114237578B (zh) * | 2021-11-05 | 2024-06-07 | 芯华章科技股份有限公司 | 显示逻辑系统设计的目标模块的方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN105468365B (zh) | 2021-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105468365A (zh) | 一种解决树控件节点数量限制的方法 | |
US8751737B2 (en) | Method and apparatus for using a shared ring buffer to provide thread synchronization in a multi-core processor system | |
CN107256180B (zh) | 数据处理方法、装置及终端 | |
CN112540806B (zh) | 一种小程序页面渲染方法、装置、电子设备及存储介质 | |
CN106096030A (zh) | 对浏览器运行进行优化的方法和装置 | |
CN105183764B (zh) | 一种数据分页方法及装置 | |
CN101446973A (zh) | 用于管理信息系统的树视图节点加载显示方法 | |
WO2019047441A1 (zh) | 一种通信优化方法及系统 | |
CN111625546B (zh) | 一种数据写入方法、装置、设备、介质 | |
CN108549534B (zh) | 图形用户界面重绘方法、终端设备及计算机可读存储介质 | |
CN103150149A (zh) | 处理数据库重做数据的方法和装置 | |
CN101483035B (zh) | 在图形界面上显示文字的方法和系统 | |
CN106502770A (zh) | 一种基于有限状态机的hmi状态迁移方法 | |
CN111813515A (zh) | 基于多进程的任务调度方法、装置、计算机设备及介质 | |
CN112243033B (zh) | 获取内存信息的方法、装置、设备及计算机可读存储介质 | |
CN105446708B (zh) | 一种用于浏览器的标签页处理方法、装置及终端 | |
CN109165712A (zh) | 分布式分期号的生成方法、装置和计算机存储介质 | |
WO2024124843A1 (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN112464130A (zh) | 一种下拉选择框输入方法、装置、设备及介质 | |
CN103209212A (zh) | 基于RIA的Web网管客户端中的数据缓存方法及系统 | |
CN112817526B (zh) | 一种数据存储方法、装置及介质 | |
CN111159480B (zh) | 一种基于电网gis数据的图形绘制方法 | |
CN112882985A (zh) | 一种数据传输系统、方法、装置及介质 | |
CN104376054B (zh) | 一种持久化实例对象的处理方法及装置 | |
CN107924310A (zh) | 使用避免转出表(pat)预测计算机处理器中的存储器指令转出 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |