easyui combogrid实现本地模糊搜索过滤多列


Posted in Javascript onMay 13, 2017

这几天在项目中前台使用到了easyui 的 combogrid插件为用户提供点选数据项的功能。由于数据项的内容可能有很多,所以仅仅是点选还不够,需要能够对用户的输入进行过滤,即根据用户的输入将某一列与用户输入匹配的数据项筛选保留下来。

实现这一功能需要以下几个步骤:

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需要加载的数据

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进行配置

$("#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: '盘条规格'}, 
      ]], 
      onSelect: function (index,row) { 
        //业务功能,不予展示 
      }, 
      onChange: function (q){ 
        doSearch(q,wireRod,['codeDesc','code','name','specification'],$(this)); 
      }, 
      onShowPanel:function () { 
          $(this).combogrid('grid').datagrid('loadData', wireRod); 
      } 
    });

4.doSearch方法

//q为用户输入,data为远程加载的全部数据项,searchList是需要进行模糊搜索的列名的数组,ele是combogrid对象 
//doSearch的思想其实就是,进入方法时将combogrid加载的数据清空,如果用户输入为空则加载全部的数据,输入不为空 
//则对每一个数据项做匹配,将匹配到的数据项加入rows数组,相当于重组数据项,只保留符合筛选条件的数据项, 
//如果筛选后没有数据,则combogrid加载空,有数据则重新加载重组的数据项 
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,默认为local,其实remote mode也可以做多列模糊搜索,因为它会向后台发送一个包含叫做‘q'的参数的http请求以请求过滤后的数据,但是这样的不好在于,明明我们已经向后台请求过一次全部的数据,为什么还要再多次请求过滤的数据呢,服务器的负载会加重,所以这种事情能在前端做了就挺好

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于JavaScript 类的使用详解
May 07 Javascript
如何判断元素是否为HTMLElement元素
Dec 06 Javascript
浅谈javascript 迭代方法
Jan 21 Javascript
DWR中各种java方法的调用
May 04 Javascript
javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结
Oct 10 Javascript
vue双向绑定的简单实现
Dec 22 Javascript
使用JS 插件qrcode.js生成二维码功能
Feb 20 Javascript
JS实现浏览器打印、打印预览示例
Feb 28 Javascript
vue-router 权限控制的示例代码
Sep 21 Javascript
vue2.0的虚拟DOM渲染思路分析
Aug 09 Javascript
Vue为什么要谨慎使用$attrs与$listeners
Aug 27 Javascript
如何在JavaScript中使用localStorage详情
Feb 04 Javascript
web.js.字符串与正则表达式操作
May 13 #Javascript
JS实现动态给标签控件添加事件的方法示例
May 13 #Javascript
jQuery插件FusionCharts绘制的2D条状图效果【附demo源码】
May 13 #jQuery
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
May 13 #jQuery
vue.js 初体验之Chrome 插件开发实录
May 13 #Javascript
JS中cookie的使用及缺点讲解
May 13 #Javascript
jQuery中clone()函数实现表单中增加和减少输入项
May 13 #jQuery
You might like
php你的验证码安全码?
2007/01/02 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
PHP之预定义接口详解
2015/07/29 PHP
Yii基于数组和对象的Model查询技巧实例详解
2015/12/28 PHP
Laravel使用Caching缓存数据减轻数据库查询压力的方法
2016/03/15 PHP
php array_values 返回数组的所有值详解及实例
2016/11/12 PHP
php从数据库读取数据,并以json格式返回数据的方法
2018/08/21 PHP
最简单的jQuery程序 入门者学习
2009/07/09 Javascript
关于javascript中的parseInt使用技巧
2009/09/03 Javascript
Jquery阻止事件冒泡 event.stopPropagation
2011/12/11 Javascript
JavaScript之引用类型介绍
2012/08/10 Javascript
判断javascript的数据类型(示例代码)
2013/12/11 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
2015/07/05 Javascript
用javascript实现自动输出网页文本
2015/07/30 Javascript
js实现网页收藏功能
2015/12/17 Javascript
Three.js利用orbit controls插件(轨道控制)控制模型交互动作详解
2017/09/25 Javascript
JavaScript编程设计模式之观察者模式(Observer Pattern)实例详解
2017/10/25 Javascript
详解为Bootstrap Modal添加拖拽的方法
2018/01/05 Javascript
解决layui的form里的元素进行动态生成,验证失效的问题
2019/09/14 Javascript
JS 数组基本用法入门示例解析
2020/01/16 Javascript
javascript实现放大镜功能
2020/12/09 Javascript
详解python脚本自动生成需要文件实例代码
2017/02/04 Python
Python查找最长不包含重复字符的子字符串算法示例
2019/02/13 Python
python selenium firefox使用详解
2019/02/26 Python
python文本数据处理学习笔记详解
2019/06/17 Python
DataFrame.to_excel多次写入不同Sheet的实例
2019/12/02 Python
Python 统计位数为偶数的数字代码详解
2020/03/15 Python
canvas使用注意点总结
2013/07/19 HTML / CSS
优衣库澳大利亚官网:UNIQLO澳大利亚
2017/01/18 全球购物
英国太阳镜品牌:Taylor Morris Eyewear
2018/04/18 全球购物
法院信息化建设方案
2014/05/21 职场文书
慈善捐赠倡议书
2014/08/30 职场文书
纪念9.18事变演讲稿
2014/09/14 职场文书
2014国庆节标语口号
2014/09/19 职场文书
寒假致家长的一封信
2015/10/10 职场文书
Python实现滑雪小游戏
2021/09/25 Python