阿桂天山的技术小结:Flask对Ztree树节点搜索定位

2023-10-13 08:45

本文主要是介绍阿桂天山的技术小结:Flask对Ztree树节点搜索定位,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

话不多说,上图上源码

1.先看效果图

2.前端页面部分:

        1)页面

<!DOCTYPE html>
<HTML><HEAD><TITLE>Ewangda 阿桂天山的Ztree实战</TITLE><meta http-equiv="content-type" content="text/html; charset=UTF-8"><link rel="stylesheet" href="/static/css/bootstrapStyle/bootstrapStyle.css" type="text/css"><link href="/static/bootstrap/css/bootstrap.min.css" rel="stylesheet" /><script type="text/javascript" src="/static/js/jquery-2.2.0.min.js"></script><script type="text/javascript" src="/static/ztree/js/jquery.ztree.core-3.5.js"></script><script type="text/javascript" src="/static/ztree/js/jquery.ztree.excheck-3.5.js"></script><script type="text/javascript" src="/static/ztree/js/jquery.ztree.exedit-3.5.js"></script><!--  gtj 实现对ztree节点筛选功能用  --><script type="text/javascript" src="/static/ztree/js/jquery.ztree.exhide-3.5.js"></script></HEAD><BODY><h2>具有搜索定位功能的Ztree</h2><div class="input-group" style="width:300px"><input type="text" id="search-input" onkeyup="autoMatchForZtree();" class="form-control" placeholder="模糊查询" style="border: 1px solid #cccccc; border-right: 0;"/><div class="input-group-addon"><i class="glyphicon glyphicon-search"></i></div></div><ul id="treeDemo" class="ztree"></ul>
</BODY></HTML>

        2)前端javascript脚本

<script >
$SCRIPT_ROOT = {{ request.script_root|tojson|safe }};
var setting = {view: {selectedMulti: false},check: {enable: true},data: {simpleData: {enable: true}},
};$(document).ready(function() {$.getJSON($SCRIPT_ROOT+'/_get_tree','',function(data){var zTreeObj = $.fn.zTree.init($("#treeDemo"), setting, data);zTreeObj.expandAll(true); //---gtj 所有节点都会默认展开})});/*** 功能:gtj 搜索匹配树节点 ***/
function searchChildren(keyword, children){if(children == null || children.length == 0){return false;}for(var i = 0; i < children.length; i++){var node = children[i];if(node.name.indexOf(keyword) != -1 && node.isHidden === false){return true;}var result = searchChildren(keyword, node.children);if(result){return true;}}return false;
}function searchParent(keyword, node){if(node == null){return false;}if(node.name.indexOf(keyword) != -1 && node.isHidden === false){return true;}return searchParent(keyword, node.getParentNode());
}var hiddenNodesForZtree = [];function autoMatchForZtree(){setTimeout(function(){var ztreeObj = $.fn.zTree.getZTreeObj("treeDemo");ztreeObj.showNodes(hiddenNodesForZtree);function filterFunc(node){var keyword = $("#search-input").val();if(searchParent(keyword, node) || searchChildren(keyword, node.children)){return false;}return true;};hiddenNodesForZtree = ztreeObj.getNodesByFilter(filterFunc);ztreeObj.hideNodes(hiddenNodesForZtree);}, 300);
}</script>

3.后端Flask代码

        1)searchztree.py

#=============================================================
#---------------------阿桂天山 Ewangda--------------------------
import op_sql
import jsonfrom flask import Flask, render_template, requestapp = Flask(__name__)# 前端主页面
@app.route('/')
def searchztree():return render_template('searchztree.html')# 后台返回所有数据
@app.route('/_get_tree')
def get_tree():return json.dumps(op_sql.transport())# 启动主页面
if __name__ == "__main__":app.run(debug=True)

        2)连接数据库获取数据:

                2.1)mysql建表语句及测试数据

CREATE TABLE `t_ztree` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(50) DEFAULT NULL,`pId` int(11) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of t_ztree
-- ----------------------------
INSERT INTO t_ztree VALUES ('1', 'Ewangda', '0');
INSERT INTO t_ztree VALUES ('2', '数智化服务', '1');
INSERT INTO t_ztree VALUES ('3', '创新视觉服务', '1');
INSERT INTO t_ztree VALUES ('4', '精准系列', '2');
INSERT INTO t_ztree VALUES ('5', '精细系列', '2');
INSERT INTO t_ztree VALUES ('8', 'EDS企业数字服务平台', '4');
INSERT INTO t_ztree VALUES ('9', 'PDS精准数字服务云平台', '4');
INSERT INTO t_ztree VALUES ('23', '精工系列', '2');
INSERT INTO t_ztree VALUES ('36', '精致系列', '3');
INSERT INTO t_ztree VALUES ('37', 'AR智能电商', '36');
INSERT INTO t_ztree VALUES ('38', '精彩系列', '3');
INSERT INTO t_ztree VALUES ('39', '大屏展示', '38');
INSERT INTO t_ztree VALUES ('40', '智能美唇', '37');
INSERT INTO t_ztree VALUES ('41', '智能靓镜', '37');

        2.2)生成ztree数据函数文件op_sql.py

def query(sql_select):conn = pymysql.connect(user="aaa", password="123xxxx", host="127.0.0.1", database="test-ztree")cursor = conn.cursor()try:cursor.execute(sql_select)result = cursor.fetchall()return resultfinally:conn.close()# 将数据库查询数据标准化json数据以便传入后台
def transport():zNdodes = []for i in query("select id, name, pId from t_ztree;"):zNdode = {}zNdode['id'] = i[0]zNdode['name'] = i[1]zNdode['pId'] = i[2]zNdodes.append(zNdode)return zNdodes

总结:所有内容都在这了,对你有用给个赞吧!!!

最后要注意:要让树节点能被筛选,一定要有ztree.exhide库

             

这篇关于阿桂天山的技术小结:Flask对Ztree树节点搜索定位的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/202061

相关文章

MySQL 分区与分库分表策略应用小结

《MySQL分区与分库分表策略应用小结》在大数据量、复杂查询和高并发的应用场景下,单一数据库往往难以满足性能和扩展性的要求,本文将详细介绍这两种策略的基本概念、实现方法及优缺点,并通过实际案例展示如... 目录mysql 分区与分库分表策略1. 数据库水平拆分的背景2. MySQL 分区策略2.1 分区概念

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas

Spring Security方法级安全控制@PreAuthorize注解的灵活运用小结

《SpringSecurity方法级安全控制@PreAuthorize注解的灵活运用小结》本文将带着大家讲解@PreAuthorize注解的核心原理、SpEL表达式机制,并通过的示例代码演示如... 目录1. 前言2. @PreAuthorize 注解简介3. @PreAuthorize 核心原理解析拦截与

C++变换迭代器使用方法小结

《C++变换迭代器使用方法小结》本文主要介绍了C++变换迭代器使用方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、源码2、代码解析代码解析:transform_iterator1. transform_iterat

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4