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 04 Javascript
IE网页js语法错误2行字符1、FF中正常的解决方法
Sep 09 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
Mar 14 Javascript
javascript实现在某个元素上阻止鼠标右键事件的方法和实例
Aug 12 Javascript
详解JavaScript正则表达式中的global属性的使用
Jun 16 Javascript
jquery实现美观的导航菜单鼠标提示特效代码
Sep 06 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
Nov 24 Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
Dec 04 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
Jun 30 Javascript
使用JS实现图片展示瀑布流效果的实例代码
Sep 12 Javascript
JavaScript中undefined和null的区别
May 03 Javascript
JS学习笔记之数组去重实现方法小结
May 29 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面向对象全攻略 (十五) 多态的应用
2009/09/30 PHP
php 上一篇,下一篇文章实现代码与原理说明
2010/05/09 PHP
PHP使用观察者模式处理异常信息的方法详解
2019/09/24 PHP
Javascript 通过json自动生成Dom的代码
2010/04/01 Javascript
js中格式化日期时间型数据函数代码
2010/11/08 Javascript
jquery EasyUI的formatter格式化函数代码
2011/01/12 Javascript
JQuery 选择器、过滤器介绍
2011/02/14 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
jQuery 事件的命名空间简单了解
2013/11/22 Javascript
jQuery中用dom操作替代正则表达式
2014/12/29 Javascript
JS原型、原型链深入理解
2016/02/27 Javascript
Web打印解决方案之证件套打的实现思路
2016/08/29 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
JS+Ajax实现百度智能搜索框
2017/08/04 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
微信小程序左滑动显示菜单功能的实现
2018/06/14 Javascript
javascript定时器的简单应用示例【控制方块移动】
2019/06/17 Javascript
深入了解Vue.js 混入(mixins)
2020/07/23 Javascript
python正则表达式修复网站文章字体不统一的解决方法
2013/02/21 Python
Python装饰器decorator用法实例
2014/11/10 Python
Python中使用hashlib模块处理算法的教程
2015/04/28 Python
通过Python 接口使用OpenCV的方法
2018/04/02 Python
python requests.post带head和body的实例
2019/01/02 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
2019/12/31 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
2020/02/26 Python
基于python检查矩阵计算结果
2020/05/21 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
CSS3中Transition动画属性用法详解
2016/07/04 HTML / CSS
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
Stio官网:男女、儿童户外服装
2019/12/13 全球购物
行政总经理岗位职责
2013/12/05 职场文书
2014年材料员工作总结
2014/11/19 职场文书
2015年高校图书馆工作总结
2015/04/30 职场文书
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL
帮你提高开发效率的JavaScript20个技巧
2021/06/18 Javascript
详细了解java监听器和过滤器
2021/07/09 Java/Android