easyui combogrid實(shí)現(xiàn)本地模糊搜索過濾多列
這幾天在項(xiàng)目中前臺使用到了easyui 的 combogrid插件為用戶提供點(diǎn)選數(shù)據(jù)項(xiàng)的功能。由于數(shù)據(jù)項(xiàng)的內(nèi)容可能有很多,所以僅僅是點(diǎn)選還不夠,需要能夠?qū)τ脩舻妮斎脒M(jìn)行過濾,即根據(jù)用戶的輸入將某一列與用戶輸入匹配的數(shù)據(jù)項(xiàng)篩選保留下來。
實(shí)現(xiàn)這一功能需要以下幾個步驟:
1.聲明一個combogrid
<div class="fitem">
<label>盤條基本信息編號:</label>
<input class="easyui-combogrid" type="text" id="addWireRodId" name="wireRodId" style="width: 150px"
data-options="required:true"></input>
</div>
2.js中請求combogrid需要加載的數(shù)據(jù)
var wireRod;
$.ajax({
url: "../wireRod/getAll?rows=100000&sort=id&order=asc",
type: "post",
dataType: "json",
success: function (result) {
wireRod = result.wireRod.list;
}
});
3.對combogrid進(jìn)行配置
$("#addWireRodId").combogrid({
idField:'id',
textField:'codeDesc',
remoteSort: false,
panelWidth: 360,
columns: [[
{field: 'codeDesc', title: '盤條序號', sortable: true, width: 70},
{field: 'code', title: '盤條編碼'},
{field: 'name', title: '盤條名稱'},
{field: 'specification', title: '盤條規(guī)格'},
]],
onSelect: function (index,row) {
//業(yè)務(wù)功能,不予展示
},
onChange: function (q){
doSearch(q,wireRod,['codeDesc','code','name','specification'],$(this));
},
onShowPanel:function () {
$(this).combogrid('grid').datagrid('loadData', wireRod);
}
});
4.doSearch方法
//q為用戶輸入,data為遠(yuǎn)程加載的全部數(shù)據(jù)項(xiàng),searchList是需要進(jìn)行模糊搜索的列名的數(shù)組,ele是combogrid對象
//doSearch的思想其實(shí)就是,進(jìn)入方法時將combogrid加載的數(shù)據(jù)清空,如果用戶輸入為空則加載全部的數(shù)據(jù),輸入不為空
//則對每一個數(shù)據(jù)項(xiàng)做匹配,將匹配到的數(shù)據(jù)項(xiàng)加入rows數(shù)組,相當(dāng)于重組數(shù)據(jù)項(xiàng),只保留符合篩選條件的數(shù)據(jù)項(xiàng),
//如果篩選后沒有數(shù)據(jù),則combogrid加載空,有數(shù)據(jù)則重新加載重組的數(shù)據(jù)項(xiàng)
function doSearch(q,data,searchList,ele){
ele.combogrid('grid').datagrid('loadData', []);
if(q == ""){
ele.combogrid('grid').datagrid('loadData', data);
return;
}
var rows = [];
$.each(data,function(i,obj){
for(var p in searchList){
var v = obj[searchList[p]];
if (!!v && v.toString().indexOf(q) >= 0){
rows.push(obj);
break;
}
}
});
if(rows.length == 0){
ele.combogrid('grid').datagrid('loadData', []);
return;
}
ele.combogrid('grid').datagrid('loadData', rows);
}
combogrid有兩種mode,local和remote,默認(rèn)為local,其實(shí)remote mode也可以做多列模糊搜索,因?yàn)樗鼤蚝笈_發(fā)送一個包含叫做‘q'的參數(shù)的http請求以請求過濾后的數(shù)據(jù),但是這樣的不好在于,明明我們已經(jīng)向后臺請求過一次全部的數(shù)據(jù),為什么還要再多次請求過濾的數(shù)據(jù)呢,服務(wù)器的負(fù)載會加重,所以這種事情能在前端做了就挺好
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- jQuery EasyUI中DataGird動態(tài)生成列的方法
- EasyUI學(xué)習(xí)之Combobox下拉列表(1)
- EasyUI 數(shù)據(jù)表格datagrid列自適應(yīng)內(nèi)容寬度的實(shí)現(xiàn)
- Easyui Datagrid自定義按鈕列(最后面的操作列)
- easyUI下拉列表點(diǎn)擊事件使用方法
- EasyUI學(xué)習(xí)之Combobox級聯(lián)下拉列表(2)
- EasyUI使用DataGrid實(shí)現(xiàn)動態(tài)列數(shù)據(jù)綁定
- jquery easyui如何實(shí)現(xiàn)格式化列
- jEasyUI 設(shè)置凍結(jié)列的實(shí)現(xiàn)示例
相關(guān)文章
curring的概念將函數(shù)式編程的概念和默認(rèn)參數(shù)以及可變參數(shù)結(jié)合在一起.一個帶n個參數(shù),curried的函數(shù)固化第一個參數(shù)為固定參數(shù),并返回另一個帶n-1個參數(shù)的函數(shù)對象,分別類似于LISP的原始函數(shù)car和cdr的行為。currying能泛化為偏函數(shù)應(yīng)用(partial function application, PFA),p 這種函數(shù)將任意數(shù)量(順序)的參數(shù)的函數(shù)轉(zhuǎn)化為另一個帶剩余參數(shù)的函數(shù)對象2012-02-02
JavaScript中的普通函數(shù)與構(gòu)造函數(shù)比較
這篇文章主要介紹了JavaScript中的普通函數(shù)與構(gòu)造函數(shù)比較,需要的朋友可以參考下2015-04-04
webpack中使用iconfont字體圖標(biāo)的方法
下面小編就為大家分享一篇webpack中使用iconfont字體圖標(biāo)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-02-02
javascript解析xml實(shí)現(xiàn)省市縣三級聯(lián)動的方法
這篇文章主要介紹了javascript解析xml實(shí)現(xiàn)省市縣三級聯(lián)動的方法,涉及javascript針對節(jié)點(diǎn)的操作與XML文件解析的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07
微信小程序如何實(shí)現(xiàn)數(shù)據(jù)共享與方法共享詳解
這篇文章主要給大家介紹了關(guān)于微信小程序如何實(shí)現(xiàn)數(shù)據(jù)共享與方法共享的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2022-01-01
javascript創(chuàng)建動態(tài)表單的方法
這篇文章主要介紹了javascript創(chuàng)建動態(tài)表單的方法,實(shí)例分析了javascript動態(tài)操作頁面表單元素的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07
一文搞懂JavaScript如何實(shí)現(xiàn)圖片懶加載
圖片懶加載,往往作為減少首頁白屏?xí)r間的一個解決方案而出現(xiàn)。本文將通過示例帶大家一起探究一下JavaScript是如何實(shí)現(xiàn)圖片懶加載的,感興趣的可以了解一下2022-06-06

