用到easyui-combogrid,数据比较少的情况,可以一页就显示完毕,然后直接下拉选择。但是对于数据量比较大的情况,一页显示全部显然不合适,好在从easyui-combogrid的数据加载方式可以知道,下拉表格继承自easyui-datagrid,属性和方法也继承自easyui-datagrid,那么当然可以利用表格的分页属性:

$('#textYear').combogrid({
panelWidth: 500,
idField: 'num',
textField: 'id',
url:'getTextYear.do',
method: 'post',
queryParams:{cond_value:''},
mode: 'local',
columns: [[
{field:'num',title:'value',width:80},
{field:'id',title:'note',width:180,align:'left'}
]],
fitColumns: true,
pagination:true,
pageSize:10

});

分页属性设置为true,前台自动显示分页栏,页面数据条数设为10条。

这样对数据量大的就可以分页了。

但是让用户一页一页的去翻页从而找到自己需要的数据显然更不合理,如果数据有几万条,所以分页控件只解决了数据显示的问题,并没有解决数据数据匹配的问题。

查看官方文档,easyui-combogrid提供了一个filter方法,用来匹配用户当前输入字符与下拉选项的值,测试后发现,filter只适用于当前页!并且在测试中还发现,easyui-combogrid当前页默认最多显示18条数据,官网的demo是18条数据,但是有翻页数据的情况下就失效了。但是官方又没有提供额外的方法,只能另外写了。

好在功夫不负有心人,还真的在网上找到了一个网友写的匹配查询方法

要匹配用户输入的字符和下拉表格的数据,就需要获得用户输入时的键盘事件或者鼠标事件,然后传递输入的字符作为参数,去进行查询,查询的方式和数据表格的查询是一样的,所以困难在于捕获用户当前输入。

/*********下拉数据表格匹配查询 *******/
setTimeout(function () {
var cond_value;
var old = '';
var search = true;
var query = [];
var $grid = $('#textYear');
$grid.combo('options').onChange = function (_new, _old) {
if (_new != old) {
old = _new;
query = [old];
setTimeout(function () {
if (query.length > 0 && search) {
var param = query.pop();
query = [];
if (param != '') {
$grid.combogrid('grid').datagrid('load', {cond_value: param});
}
loading = false;
}
}, 500);
}
};

$grid.combogrid('grid').datagrid('options').onSelect = function(){
return false;
};

$grid.combogrid('grid').datagrid('options').onClickRow = function(index, row) {
search = false;
$grid.combo('hidePanel');
$grid.combo('setValue', row.id);
$grid.combo('setText', row.num);
setTimeout(function () {
search = true;
}, 1000);
}
}, 1000);

设置一个合适的延迟时间,因为用户输入是有时间的,一般输入中文耗时比输入英文字符耗时要长,所以稍微设置长一点。然后声明一个查询参数数组query,参数变量名cond_value,当检测到当前combogrid的选项options有更改时,即用户有输入时,调用combo的onChange方法,这个方法有两个参数,一个设为新值,一个设为旧值,当新值不等于旧值,就把新值赋给查询参数。然后下拉数据表格根据这个参数去重新加载数据。

由于每输入一个字符,数据表格就会根据这个字符去做一次查询并加载数据,当用户输入字符较多时,查询和加载会进行很多次,原因是我们没法判断用户什么时候输入完毕,这样会带来性能的损耗,所以一开始设置一个合理的延时是非常有必要的。

匹配查询方法非原创,请支持原创作者!

easyui-combogrid匹配查询的更多相关文章

  1. EasyUI ComboGrid的绑定,上下键和回车事件,输入条件查询

    首先我们先看一下前台的绑定事件 1.先定义标签 <input id="cmbXm" type="text" style="width: 100p ...

  2. 【原】EasyUI ComboGrid 集成分页、按键示例

    需求: 1.下拉框下拉时出现表格: 2.表格带分页功能: 3.可以使用向上键.向下键在表格中移动选择行数据: 4.可以使用回车键在表格中选中行数据: 5.在下拉框的文本框中输入内容,能查询表格: 6. ...

  3. easyui combogrid下拉表格的分页/按键/动态搜索

    作者:xfl4629712  <  easyui combogrid下拉表格的分页/按键/动态搜索  > 需求: 1.下拉框下拉时出现表格: 2.表格带分页功能: 3.可以使用向上键.向下 ...

  4. 表单(中)-EasyUI Combogrid 组合网格、EasyUI Numberbox 数字框、EasyUI Datebox 日期框、EasyUI Datetimebox 日期时间框、EasyUI Calendar 日历

    EasyUI Combogrid 组合网格 扩展自 $.fn.combo.defaults 和 $.fn.datagrid.defaults.通过 $.fn.combogrid.defaults 重写 ...

  5. jquery easyui combogrid Uncaught TypeError:Cannot read property

    ================================ ©Copyright 蕃薯耀 2020-01-07 https://www.cnblogs.com/fanshuyao/ 一.问题描述 ...

  6. (转)MySQL数据表中带LIKE的字符匹配查询

    MySQL数据表中带LIKE的字符匹配查询 2014年07月15日09:56    百科369 MySQL数据表中带LIKE的字符匹配查询 LIKE关键字可以匹配字符串是否相等. 如果字段的值与指定的 ...

  7. ElasticSearch查询 第四篇:匹配查询(Match)

    <ElasticSearch查询>目录导航: ElasticSearch查询 第一篇:搜索API ElasticSearch查询 第二篇:文档更新 ElasticSearch查询 第三篇: ...

  8. mysql学习2:模糊匹配查询like,regexp,in

    mysql模糊匹配查询like,regexp,in   摘要 内容比较简单,无摘要.   关键词 模糊查询  like  regexp  in  contact   正文 下图是示例用到的数据表信息 ...

  9. Springboot+Vue实现仿百度搜索自动提示框匹配查询功能

    案例功能效果图 前端初始页面 输入搜索信息页面 点击查询结果页面 环境介绍 前端:vue 后端:springboot jdk:1.8及以上 数据库:mysql 核心代码介绍 TypeCtrler .j ...

随机推荐

  1. [翻译] Facebook HHVM 团队封闭开发三周成果展

    本人翻译的一篇文章,首发于伯乐在线. [补充信息]HipHop for PHP是一系列PHP脚本语言的程式码转换器的集合,它包含HPHPc.HPHPi.HPHPd以及HHVM,这四个脚本引擎各有所不同 ...

  2. 学习《CSS选择器Level-4》不完全版

    1 概述 1.1 前言 选择器是CSS的核心组件.本文依据W3C的Selectors Level 4规范,概括总结了Level1-Level4中绝大多数的选择器,并做了简单的语法说明及示例演示.希望对 ...

  3. 【转】Nginx跳转任意Http请求到Https

    网站买了证书,绿条,多霸气! 那么自然得拦截http的访问方式了. 拦截http,301到https 各种Google,最后在Nginx官网找到例子,配置很简单,如下: server { listen ...

  4. zabbix-3.4-服务监控

    服务监控 总览 服务监控(services monitoring)旨在帮助那些想要高级(业务)基础设施的监控的人.在许多情况下,我们关注的不是底层细节,比如磁盘空间不足.CPU 负载高等.我们关注的是 ...

  5. 汇编:jmp系列跳转指令总结

    助记方法: J:跳转C: 进位位置位N: 否S: 符号位置位o: 溢出位置位Z: 零标志位置位E: 等于P:奇偶位置位A: AboveB: BelowL: Less (Little的比较级)G: Gr ...

  6. 为项目创建podfile

    由于写项目 不常用到,容易忘记,记录一下 第一步:新建一个项目: 第二步:打开终端,输入 cd 第三步:把项目拖入终端,(获取项目路径) 第四步:回车,输入 pod init (生成podfile 文 ...

  7. c#树形结构

    http://download.csdn.net/detail/rememberme001/6997235 http://bbs.csdn.net/topics/310094150 http://ww ...

  8. windows下安装win7虚拟机并安装oracle

    一.win7虚拟机 与安装linux虚拟机没有什么不同,不同的是选择客户机操作系统.内存.磁盘容量,以及映像文件. 创建win7虚拟机步骤简化: 新建虚拟机-->>自定义-->> ...

  9. 微服务SpringCloud+Docker入门到高级实战(目录)

    第一章 课程介绍和学习路线 1.微服务架构SpringCloud课程介绍 简介:课程介绍和课程大纲讲解,讲课风格和重点内容理解技巧2.技术选型和学后水平 简介:课程所需基础和技术选型讲解,学完课程可以 ...

  10. java内存模型原理阅读总结

    Java内存模型可以理解为在特定操作协议下,对特定的内存或高速缓存进行读写访问的过程抽象.不同架构的物理计算机可以有不一样的内存模型,java虚拟机也有自己的内存模型,java虚拟机规范中试图定义一种 ...