Bootstrap treeview實(shí)現(xiàn)動態(tài)加載數(shù)據(jù)并添加快捷搜索功能
寫在前面:
jQuery多級列表樹插件基于Bootstrap,以簡單和優(yōu)雅的方式來顯示一些繼承樹結(jié)構(gòu),如視圖樹、列表樹等。
實(shí)用Bootstrap樹形菜單特效插件Bootstrap Tree View,非常不錯(cuò)的Bootstrap插件,現(xiàn)在很多Bootstrap制作的頁面都需要此功能,此插件需要Bootstrap3版本以及jQuery 2.0極以上版本支持,支持眾多參數(shù)自定義功能,顏色、背景色、圖標(biāo)、鏈接等,還是很不錯(cuò)的。
具體效果請暫時(shí)移步: http://jonmiles.github.io/bootstrap-treeview/
好了,話不多說,開整。
要求用戶能夠快速查詢到省市區(qū)的區(qū)域名稱信息(給用戶參考,用于規(guī)范書寫導(dǎo)入模板),并且以樹形結(jié)構(gòu)展示。
最終效果展示:
一、 數(shù)據(jù)表結(jié)構(gòu) 數(shù)據(jù)源為省市區(qū)地域信息表,該表為自關(guān)聯(lián)結(jié)構(gòu)。如圖:
二、前臺頁面
1.頁面引入
<link rel="stylesheet" href="項(xiàng)目靜態(tài)資源路徑/bootstrap-treeview/css/bootstrap.css" rel="external nofollow" > <script type="text/javascript" src="項(xiàng)目靜態(tài)資源路徑/js/jquery/3.1.0/jquery-3.1.0.min.js"></script> <script type="text/javascript" src="項(xiàng)目靜態(tài)資源路徑/bootstrap/bootstrap.js"></script> <script type="text/javascript" src="項(xiàng)目靜態(tài)資源路徑/bootstrap-treeview/js/jquery.js"></script> <script type="text/javascript" src="項(xiàng)目靜態(tài)資源路徑/bootstrap-treeview/js/bootstrap-treeview.js"> </script>
2.頁面展示區(qū)
<!-- 省市區(qū)地域查詢展示 -->
<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="請輸入要查詢的省市區(qū)名稱信息..." value="">
</div>
**_ <!-- 該部分為復(fù)選框,用于豐富搜索體驗(yàn),本文忽略
<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">
準(zhǔn)確匹配
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" class="checkbox" id="chk-reveal-results" value="false">
顯示結(jié)果
</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>省市區(qū)名稱層級樹</h4>
<div id="treeview-searchable" class=""></div>
</div>
<div class="col-sm-4">
<h4>查詢結(jié)果展示</h4>
<div id="search-output"></div>
</div>
</div>
</div>
3.js 腳本
$(function () {
var defaultData;
$.ajax({
type: "post",
url: "項(xiàng)目請求路徑方法.json",
dataType: "json",
success: function (result) {
defaultData=result;
var initSearchableTree = function() {
return $('#treeview-searchable').treeview({
data: defaultData,
nodeIcon: 'glyphicon glyphicon-globe',
emptyIcon: '', //沒有子節(jié)點(diǎn)的節(jié)點(diǎn)圖標(biāo)
//collapsed: true,
});
};
var $searchableTree = initSearchableTree();
$('#treeview-searchable').treeview('collapseAll', {
silent : false//設(shè)置初始化節(jié)點(diǎn)關(guān)閉
});
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 //設(shè)置初始化節(jié)點(diǎn)關(guān)閉
});
}
//$('.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 + ' 匹配的搜索結(jié)果</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//設(shè)置初始化節(jié)點(diǎn)關(guān)閉
});
});
},
error: function () {
alert("省市區(qū)地域信息加載失??!")
}
});
});
三、后臺主要代碼 后臺采用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 {
//獲取緩存中的省市區(qū)信息(本項(xiàng)目直接從緩存中獲取,也可以單獨(dú)寫方法到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());
//盛放區(qū)縣
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;
}
總結(jié)
以上所述是小編給大家介紹的Bootstrap treeview實(shí)現(xiàn)動態(tài)加載數(shù)據(jù)并添加快捷搜索功能,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言!
- Android TreeView實(shí)現(xiàn)帶復(fù)選框樹形組織結(jié)構(gòu)
- 對Python 窗體(tkinter)樹狀數(shù)據(jù)(Treeview)詳解
- bootstrap treeview 樹形菜單帶復(fù)選框及級聯(lián)選擇功能
- WPF自定義TreeView控件樣式實(shí)現(xiàn)QQ聯(lián)系人列表效果
- Android UI 之實(shí)現(xiàn)多級樹形列表TreeView示例
- JS樹形菜單組件Bootstrap TreeView使用方法詳解
- Bootstrap樹形菜單插件TreeView.js使用方法詳解
- 淺析BootStrap Treeview的簡單使用
- GTK treeview原理及使用方法解析
相關(guān)文章
js實(shí)現(xiàn)Form欄顯示全格式時(shí)間時(shí)鐘效果代碼
這篇文章主要介紹了js實(shí)現(xiàn)Form欄顯示全格式時(shí)間時(shí)鐘效果代碼,可讀取當(dāng)前的完整時(shí)間并實(shí)時(shí)顯示,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-08-08
JavaScript 隱式類型轉(zhuǎn)換規(guī)則詳解
這篇文章主要為大家介紹了JavaScript 隱式類型轉(zhuǎn)換規(guī)則詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2023-05-05

