当前位置: 移动技术网 > IT编程>开发语言>JavaScript > Bootstrap treeview实现动态加载数据并添加快捷搜索功能

Bootstrap treeview实现动态加载数据并添加快捷搜索功能

2018年02月02日  | 移动技术网IT编程  | 我要评论
写在前面: jquery多级列表树插件基于bootstrap,以简单和优雅的方式来显示一些继承树结构,如视图树、列表树等。 实用bootstrap树形菜单特效插件boo

写在前面:

jquery多级列表树插件基于bootstrap,以简单和优雅的方式来显示一些继承树结构,如视图树、列表树等。

实用bootstrap树形菜单特效插件bootstrap tree view,非常不错的bootstrap插件,现在很多bootstrap制作的页面都需要此功能,此插件需要bootstrap3版本以及jquery 2.0极以上版本支持,支持众多参数自定义功能,颜色、背景色、图标、链接等,还是很不错的。

具体效果请暂时移步:

好了,话不多说,开整。

要求用户能够快速查询到省市区的区域名称信息(给用户参考,用于规范书写导入模板),并且以树形结构展示。

最终效果展示:

 

一、 数据表结构 数据源为省市区地域信息表,该表为自关联结构。如图:

 

二、前台页面

1.页面引入

<link rel="stylesheet" href="项目静态资源路径/bootstrap-treeview/css/bootstrap.css" rel="external nofollow" >
 <script type="text/javascript" src="项目静态资源路径/js/jquery/3.1.0/jquery-3.1.0.min.js"></script>
 <script type="text/javascript" src="项目静态资源路径/bootstrap/bootstrap.js"></script>
 <script type="text/javascript" src="项目静态资源路径/bootstrap-treeview/js/jquery.js"></script>
 <script type="text/javascript" src="项目静态资源路径/bootstrap-treeview/js/bootstrap-treeview.js"> </script>

2.页面展示区

<!-- 省市区地域查询展示 -->
 <div class="container">
  <div class="row">
  <div class="col-sm-4">
   <h4>快捷搜索</h4>
   <!-- <form> -->
   <div class="form-group">
    <label for="input-search" class="sr-only">快捷搜索:</label>
    <input type="input" class="form-control" id="input-search" placeholder="请输入要查询的省市区名称信息..." value="">
   </div>
   **_ <!-- 该部分为复选框,用于丰富搜索体验,本文忽略
<div class="checkbox">
    <label>
    <input type="checkbox" class="checkbox" id="chk-ignore-case" value="false"/>
     忽略大小写
    </label>
   </div>
   <div class="checkbox">
    <label>
    <input type="checkbox" class="checkbox" id="chk-exact-match" value="false">
     准确匹配
    </label>
   </div>
   <div class="checkbox">
    <label>
    <input type="checkbox" class="checkbox" id="chk-reveal-results" value="false">
     显示结果
    </label>
   </div> -->_**
   <button type="button" class="btn btn-success" id="btn-search">搜索</button>
   <button type="button" class="btn btn-default" id="btn-clear-search">清除</button>
   <!-- </form> -->
  </div>
  <div class="col-sm-4">
   <h4>省市区名称层级树</h4>
   <div id="treeview-searchable" class=""></div>
  </div>
  <div class="col-sm-4">
   <h4>查询结果展示</h4>
   <div id="search-output"></div>
  </div>
  </div>
  </div>

3.js 脚本

$(function () {
  var defaultdata;
   $.ajax({
    type: "post",
    url: "项目请求路径方法.json",
    datatype: "json",
    success: function (result) { 
    defaultdata=result;
     var initsearchabletree = function() {
     return $('#treeview-searchable').treeview({
      data: defaultdata,
      nodeicon: 'glyphicon glyphicon-globe',
      emptyicon: '', //没有子节点的节点图标
      //collapsed: true,
     });
     };
     var $searchabletree = initsearchabletree();
     $('#treeview-searchable').treeview('collapseall', { 
     silent : false//设置初始化节点关闭
    });
     var findsearchablenodes = function() {
     return $searchabletree.treeview('search', [ $.trim($('#input-search').val()), { ignorecase: false, exactmatch: false } ]);
     };
     var searchablenodes = findsearchablenodes();
     // select/unselect/toggle nodes
     $('#input-search').on('keyup', function (e) {
     var str = $('#input-search').val(); 
     if($.trim(str).length>0){
      searchablenodes = findsearchablenodes();
     } else {
     $('#treeview-searchable').treeview('collapseall', { 
      silent : false //设置初始化节点关闭
     });
     }
     //$('.select-node').prop('disabled', !(searchablenodes.length >= 1));
     });
    var search = function(e) {
      var pattern = $.trim($('#input-search').val());
      var options = {
      ignorecase: $('#chk-ignore-case').is(':checked'),
      exactmatch: $('#chk-exact-match').is(':checked'),
      revealresults: $('#chk-reveal-results').is(':checked')
      };
      var results = $searchabletree.treeview('search', [ pattern, options ]);
      var output = '<p>' + results.length + ' 匹配的搜索结果</p>';
      $.each(results, function (index, result) {
      output += '<p>- <span style="color:red;">' + result.text + '</span></p>';
      });
      $('#search-output').html(output);
     }
     $('#btn-search').on('click', search);
     $('#input-search').on('keyup', search);
     $('#btn-clear-search').on('click', function (e) {
      $searchabletree.treeview('clearsearch');
      $('#input-search').val('');
      $('#search-output').html('');
      $('#treeview-searchable').treeview('collapseall', {
      silent : false//设置初始化节点关闭
     });
     });
    
    },
    error: function () {
     alert("省市区地域信息加载失败!")
    }
   });
  });

三、后台主要代码 后台采用springmvc+spring+mybatis框架, 以下为controller层代码

@responsebody
@requestmapping(value = "/queryareainfo", method = { requestmethod.post }, produces = mediatype.application_json_value)
 public list<object> queryareainfo() {
 list<areavo> areainfo=new arraylist<>();
 try {
 //获取缓存中的省市区信息(本项目直接从缓存中获取,也可以单独写方法到service、dao层查询)
 ecncsysconfig sysconfig = new ecncsysconfig();
 areainfo = sysconfig.init_sys_ecnc_areavo;
 } catch (throwable e) {
 e.printstacktrace();
 }
 //盛放省份
 list<object> result=new arraylist<>();
 for (areavo areavo : areainfo) {
 map<string, object> map= new hashmap<>();
 if("2".equals(areavo.getgrade())){
 map.put("text", areavo.getname());
 //盛放地市
 list<object> clist=new arraylist<>();
 for (areavo cvo : areainfo) {
  map<string, object> cmap=new hashmap<>();
  if (cvo.getparentid() != null && cvo.getparentid().equals(areavo.getid())) {
  cmap.put("text", cvo.getname());
  //盛放区县
  list<object> rlist=new arraylist<>();
  for (areavo rvo : areainfo) {
  map<string, object> rmap=new hashmap<>();
  if (cvo.getid().equals(rvo.getparentid())) {
  rmap.put("text", rvo.getname());
  rlist.add(rmap);
  }
  }
  cmap.put("nodes", rlist);
  clist.add(cmap);
  }
 }
 map.put("nodes", clist);
 result.add(map);
 }
 }
 return result;
 }

总结

以上所述是小编给大家介绍的bootstrap treeview实现动态加载数据并添加快捷搜索功能,希望对大家有所帮助

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网