欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

bootstrap treeview数据回显(预设选中)

程序员文章站 2022-06-08 15:01:17
...

维护一个老项目,遇到treeview的一个bug修复,需要将列表树中选中的节点,在查看时进行回显。

1、什么是bootstrap treeview?

一款树形列表插件,相关使用方法参见文档:

https://www.jqueryscript.net/other/Dynamic-Tree-View-Plugin-jQuery-Bootstrap.html

2、TreeView插件选中节点的方法:

$('#default-tree').treeview('checkNode', [ nodeId, { silent:true } ]);

其中nodeId 为列表树的ID。

3、加载的数据报文样版

{
		"text": "西装_53",
		"id": 53,
		"preId": 51,
		"nextId": 57,
		"icon": null,
		"code": "wear-suits",
		"parent": 5,
		"sort": 73,
		"preSort": 51,
		"nextSort": 74,
		"maxSort": 94,
		"selected": false,
		"selectable": true,
		"state": null,
		"nodes": [{
			"text": "西服套装_109",
			"id": 109,
			"preId": null,
			"nextId": 111,
			"icon": null,
			"code": "wear-suits-suits",
			"parent": 53,
			"sort": 110,
			"preSort": null,
			"nextSort": 117,
			"maxSort": 117,
			"selected": false,
			"selectable": true,
			"state": null,
			"nodes": null
		},
		{
			"text": "西装背心_111",
			"id": 111,
			"preId": 109,
			"nextId": null,
			"icon": null,
			"code": "wear-suits-suitsvests",
			"parent": 53,
			"sort": 117,
			"preSort": 110,
			"nextSort": null,
			"maxSort": 117,
			"selected": false,
			"selectable": true,
			"state": null,
			"nodes": null
		}]
	}

这份数据是维护在服务端数据库。

3、数据回显遇到的坑

3.1、方法汇总的nodeId 与数据报文中的id不是同一个概念

方法中的nodeId:TreeView加载数据报文动态生成的,根据加载顺序递增。

数据报文中的id: 服务端定义,TreeView插件不会将其作为nodeId

3.2、 获取树节点

    //获取全量节点(包括收拢未展示节点)
	function getAllTreeNode() {
        var treeViewObject = $('#tree').data('treeview'),
            allCollapsedNodes = treeViewObject.getCollapsed(),
            allExpandedNodes = treeViewObject.getExpanded(),
            allNodes = allCollapsedNodes.concat(allExpandedNodes);
        return allNodes;
    }

4、根据服务端返回的选中数据,依次遍历调用checkNode进行数据回显

备注:此种方式,当树的node足够庞大的时候,可能会出现页面加载缓慢问题。