CN105468365B - 一种解决树控件节点数量限制的方法 - Google Patents
一种解决树控件节点数量限制的方法 Download PDFInfo
- Publication number
- CN105468365B CN105468365B CN201510805867.9A CN201510805867A CN105468365B CN 105468365 B CN105468365 B CN 105468365B CN 201510805867 A CN201510805867 A CN 201510805867A CN 105468365 B CN105468365 B CN 105468365B
- Authority
- CN
- China
- Prior art keywords
- node
- tree control
- node data
- data
- nodes
- 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.)
- Active
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 Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (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 (1)
1.一种解决树控件节点数量限制的方法,其特征在于,树控件具有后台服务和前端展现两个子功能,后台服务负责给前端展现提供节点数据,前端展现负责接收来自后台服务的节点数据并展现;树控件的每个节点有一个ID值,此节点ID作为树节点的唯一标识,包括如下步骤:
步骤1、当软件界面刚展现时,树控件只显示根节点,当用户点击根节点时,通过异步方式向系统后台获取所有的下级子节点数据,分批加载子节点数据,然后,将加载到的子节点数据缓存到本地数组中,最后根据树控件上当前处于可见区域并处于展开状态的节点,从本地数组中读取对应的子节点数据并渲染到树控件上展现;
前端展现传递父节点ID参数给后台服务,后台服务检索出父节点ID下有N个子节点数据,该N个子节点数据分M批返回给前端展现;
前端展现把接收到的节点数据,按层级关系存储到本地数组中,根据树控件上当前处于可见区域并处于展开状态的节点,从本地数组中读取对应的子节点数据并渲染到树控件上展现;假定树控件当前可见的节点有A和B两个,且A和B两个节点都处于展开的状态,此时树控件将从本地数组里读取A和B两个节点的数据,并渲染到树控件上展现;
步骤2、树控件只留下处于可见区域并且处于展开状态下的节点数据,其余的节点数据一旦处于隐藏或收缩后的状态,立即自动移除,如果树控件的滚动条滑动到节点使之可见时,程序将自动加载该可见节点的节点数据,同时把离开可见区域的节点数据移除:
当树控件的滚动条滑动至C和D节点时,随着滚动条的滑动,A和B两节点由可见状态变为不可见状态,此时树控件自动把A和B两节点的数据从树控件上移除,同时又从本地数组中读取C和D的节点数据并渲染到树控件上展现;若树控件的滚动条重新滑动到B节点时,此时树控件又从本地数组中读取B节点的数据进行展现,同时把变为隐藏状态的所有节点数据从树控件上移除,滚动条至B节点可见时,树控件又重新加载B节点的数据展现,并移除掉变为不可见状态的D节点数据,以后的操作流程依此类推。
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 CN105468365A (zh) | 2016-04-06 |
CN105468365B true 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) |
Families Citing this family (9)
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 | 北京大数据研究院 | 数据显示方法及装置 |
JP7109747B2 (ja) * | 2019-02-08 | 2022-08-01 | 株式会社フォーラムエンジニアリング | ツリー情報提供装置およびツリー情報提供用プログラム製品 |
CN112434030B (zh) * | 2020-11-11 | 2022-11-18 | 上海芯翌智能科技有限公司 | 基于树形结构数据的高性能列表实现方法与设备 |
CN114237578B (zh) * | 2021-11-05 | 2024-06-07 | 芯华章科技股份有限公司 | 显示逻辑系统设计的目标模块的方法及相关设备 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7194743B2 (en) * | 2000-12-12 | 2007-03-20 | Citrix Systems, Inc. | Methods and apparatus for communicating changes between a user interface and an executing application using property paths |
KR20070029104A (ko) * | 2003-09-22 | 2007-03-13 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | 디스플레이되는 계층적 데이터 구조를 통한 네비게이팅 |
US8487957B1 (en) * | 2007-05-29 | 2013-07-16 | Google Inc. | Displaying and navigating within photo placemarks in a geographic information system, and applications thereof |
CN101408877B (zh) * | 2007-10-10 | 2011-03-16 | 英业达股份有限公司 | 树节点加载系统及其方法 |
CN101593070B (zh) * | 2008-05-30 | 2011-11-09 | 国际商业机器公司 | 对大量信息进行可视化的方法和设备 |
US8645428B2 (en) * | 2011-12-08 | 2014-02-04 | Xerox Corporation | Arithmetic node encoding for tree structures |
CN102999608A (zh) * | 2012-11-21 | 2013-03-27 | 用友软件股份有限公司 | 大数据的树表展现系统和树表展现方法 |
CN103853729B (zh) * | 2012-11-29 | 2019-03-26 | 腾讯科技(深圳)有限公司 | 页面加载方法及其系统 |
CN104063381B (zh) * | 2013-03-19 | 2018-04-20 | 华为技术有限公司 | 多级树形菜单的显示方法和终端 |
-
2015
- 2015-11-20 CN CN201510805867.9A patent/CN105468365B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN105468365A (zh) | 2016-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105468365B (zh) | 一种解决树控件节点数量限制的方法 | |
CN103226486A (zh) | 对浏览器运行进行优化的方法和装置 | |
CN105824830B (zh) | 一种显示页面的方法、客户端及设备 | |
US20230115491A1 (en) | Information presentation method and apparatus, electronic device, and storage medium | |
CN103345405A (zh) | 应用程序的启动方法、装置和客户端 | |
CN110532489A (zh) | 页面的展示方法、装置、设备及介质 | |
CN101866291A (zh) | 防止基本输入输出系统无法进入开机程序的方法与装置 | |
CN105549847B (zh) | 一种歌曲播放界面的图片显示方法及用户终端 | |
CN104750378A (zh) | 输入法的输入模式自动切换方法及装置 | |
CN104021016A (zh) | 加载浏览器插件图标的方法及浏览器 | |
CN105630501A (zh) | 一种基于QML+OpenGL的车载图形界面系统 | |
EP2933731A1 (en) | Method for configuring browser bookmarks, device and terminal thereof | |
CN110955850A (zh) | 一种组件化树形控件的处理方法 | |
CN107517312A (zh) | 一种壁纸切换方法、装置及终端设备 | |
CN106502770A (zh) | 一种基于有限状态机的hmi状态迁移方法 | |
US8555191B1 (en) | Method, system, and apparatus for keystroke entry without a keyboard input device | |
CN110968352A (zh) | 一种pcie设备的复位系统及服务器系统 | |
CN108804584A (zh) | 数据展示方法、装置、设备及存储介质 | |
CN103095289A (zh) | 一种信号延迟控制电路 | |
CN113220399B (zh) | 一种界面显示方法、装置、智能屏设备及存储介质 | |
CN114840465A (zh) | 提高PCIe卡兼容性的方法、装置、设备及存储介质 | |
CN107025040B (zh) | 基于oled屏幕的显示设置方法、系统及图形用户界面 | |
CN1815621B (zh) | 访问存储器单元的系统和方法 | |
CN108268298B (zh) | 桌面图标的生成方法、装置、存储介质及电子设备 | |
CN112464500B (zh) | 备份cell替换电路验证方法、装置、存储介质和终端 |
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 |