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 相关文章推荐
JQury slideToggle闪烁问题及解决办法
Jul 05 Javascript
简短几句jquery代码的实现一个图片向上滚动切换
Sep 02 Javascript
THREE.JS入门教程(1)THREE.JS使用前了解
Jan 24 Javascript
jQuery 如何先创建、再修改、后添加DOM元素
May 20 Javascript
基于jQuery实现二级下拉菜单效果
Feb 01 Javascript
JavaScript代码性能优化总结(推荐)
May 16 Javascript
快速解决js开发下拉框中blur与click冲突
Oct 10 Javascript
JS实现新建文件夹功能
Jun 17 Javascript
基于zTree树形菜单的使用实例
Dec 25 Javascript
vue axios整合使用全攻略
May 24 Javascript
Vue axios设置访问基础路径方法
Sep 19 Javascript
Vue中使用matomo进行访问流量统计的实现
Nov 05 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的chr和ord函数实现字符加减乘除运算实现代码
2011/12/05 PHP
php中jpgraph类库的使用介绍
2013/08/08 PHP
PHP判断网络文件是否存在的方法
2015/03/12 PHP
PHP根据key删除数组中指定的元素
2019/02/28 PHP
jquery dialog键盘事件代码
2010/08/01 Javascript
Javascript学习笔记一 之 数据类型
2010/12/15 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
2014/01/24 Javascript
jquery事件preventDefault()方法用法实例
2015/01/16 Javascript
JS实现自动变化的导航菜单效果代码
2015/09/09 Javascript
简单实现限制uploadify上传个数
2015/11/16 Javascript
jQuery实现最简单的切换图效果【可兼容IE6、火狐、谷歌、opera等】
2016/09/04 Javascript
bootstrap suggest搜索建议插件使用详解
2017/03/25 Javascript
vue2.0中click点击当前li实现动态切换class
2017/06/21 Javascript
vue绑定设置属性的多种方式(5)
2017/08/16 Javascript
基于JavaScript实现抽奖系统
2018/01/16 Javascript
element ui 对话框el-dialog关闭事件详解
2018/02/26 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
2018/02/26 Javascript
JS实现全屏预览F11功能的示例代码
2018/07/23 Javascript
layui监听select变化,以及设置radio选中的方法
2019/09/24 Javascript
JS严格模式原理与用法实例分析
2020/04/27 Javascript
使用python解析xml成对应的html示例分享
2014/04/02 Python
Python作用域用法实例详解
2016/03/15 Python
Python实现SSH远程登陆,并执行命令的方法(分享)
2017/05/08 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
2020/05/22 Python
Scrapy框架介绍之Puppeteer渲染的使用
2020/06/19 Python
加拿大领先的优质厨具产品在线购物网站:Golda’s Kitchen
2017/11/17 全球购物
前台文员岗位职责
2013/12/28 职场文书
银行营业厅大堂经理岗位职责
2014/01/06 职场文书
文明青少年标兵事迹材料
2014/01/28 职场文书
学雷锋志愿服务月活动总结
2014/03/09 职场文书
公司委托书范本
2014/04/04 职场文书
《三亚落日》教学反思
2014/04/26 职场文书
2014年入党积极分子学习三中全会思想汇报
2014/09/13 职场文书
基于Python绘制子图及子图刻度的变换等的问题
2021/05/23 Python
浅析Django接口版本控制
2021/06/26 Python
mysql配置SSL证书登录的实现
2021/09/04 MySQL