>  기사  >  웹 프론트엔드  >  Bootstrap 프레임워크에서 treeview를 사용하여 데이터를 동적으로 로드하는 방법

Bootstrap 프레임워크에서 treeview를 사용하여 데이터를 동적으로 로드하는 방법

亚连
亚连원래의
2018-06-13 13:59:445198검색

이 글은 부트스트랩 트리뷰를 사용해 데이터를 동적으로 로드하고, 빠른 검색 기능을 추가한 내용입니다. 필요한 친구가 참고하면 됩니다.

앞에 작성:

jQuery 다중 레벨 목록 트리 플러그- in은 간단하고 우아한 방식으로 부트스트랩을 기반으로 뷰 트리, 목록 트리 등과 같은 일부 상속 트리 구조를 표시합니다.

Bootstrap Tree View는 실용적인 Bootstrap 트리 메뉴 특수 효과 플러그인입니다. Bootstrap에서 제작한 많은 페이지에는 이제 이 기능이 필요합니다. Bootstrap 3 버전 및 jQuery 2.0 이상이 필요합니다. . 다양한 매개변수 사용자 정의 기능을 지원합니다. 색상, 배경색, 아이콘, 링크 등은 여전히 ​​매우 좋습니다.

일시적으로 다음 주소로 이동하세요: http://jonmiles.github.io/bootstrap-treeview/

좋아요, 더 이상 고민하지 말고 시작해 보겠습니다.

사용자가 지방 및 시의 지역명 정보(사용자 참조용, 작성 표준화 및 템플릿 가져오기에 사용)를 빠르게 쿼리하고 이를 트리 구조로 표시해야 합니다.

최종 효과 표시:

1. 데이터 테이블 구조 데이터 소스는 자체 연관 구조인 시·도 지역 정보 테이블입니다. 사진과 같습니다.

2. 프론트 페이지

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. 페이지 표시 영역

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

3.js 스크립트

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

3. 메인 배경 코드 배경은 SpringMVC+를 사용합니다. Spring+Mybatis 프레임워크 다음은 컨트롤러 레이어 코드입니다

@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;
 }

위 내용은 모든 사람을 위해 컴파일한 내용입니다.

관련 기사:

ui-route를 사용하여 AngularJS에서 다층 중첩 라우팅 구현(자세한 튜토리얼)

Vue+jquery를 사용하여 테이블의 지정된 열 텍스트를 줄이는 방법

방법 Vue를 사용하여 구현하려면 쇼핑몰

웹 마우스 효과 구현 방법(자세한 튜토리얼)

위 내용은 Bootstrap 프레임워크에서 treeview를 사용하여 데이터를 동적으로 로드하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.