一、使用场景

  下拉框可以很方便地为我们提供选择功能,通过下拉框我们可以便捷地选择某个值,而不需要手动输入。在EasyUI中有ComboGrid与之对应。ComboGrid既可以当中下拉框来使用,又可以进行搜索,展示与当前输入的字符相匹配的数据。
  一般我们有两种方式使用ComboGrid。一种是将数据先获取,带到页面,然后在页面加载的时候进行渲染;另一种是当页面加载完成后,通过ajax请求后台服务,获取json数据,再进行渲染。这两种方式在一般的应用中都可以使用,也不存在其他问题。然而当数据量大的时候,这两种方式都不能很好的满足我们的需要。例如数据量达到万或者几十万的时候,加载该页面的时间就会明显变长,甚至卡死。此时我们可以使用ComboGrid分页的方式,对数据进行分页展示。

二、示例

  html代码如下:

 <!DOCTYPE html>
<html>
<head> <meta charset="utf-8"/>
<title>easyui-combox 分页示例</title>
<link rel="stylesheet" type="text/css" href="resource/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="resource/themes/icon.css">
<link rel="stylesheet" type="text/css" href="resource/demo.css">
</head>
<body>
<div>
<span><b class="tool_box_b">选择用户:</b></span>
<div>
<input id="person" style="width:285px;"/>
<input id="personId" type="hidden" name="personId"/>
<input type="text" id="txtName" style="display: none;" />
<input type="text" id="txtId" style="display: none;" />
</div>
</div>
<script type="text/javascript" src="resource/jquery.min.js"></script>
<script type="text/javascript" src="resource/jquery.easyui.min.js"></script>
<script type="text/javascript">
$(function () {
$('#person').combogrid({
panelWidth: 400,
idField: 'id', //ID字段
textField: 'name', //显示的字段
url: "${pageContext.request.contextPath}/controller/persons.action",
fitColumns: true,
striped: true,
editable: true,
pagination: true, //是否分页
rownumbers: true, //序号
collapsible: false, //是否可折叠的
fit: true, //自动大小
method: 'post',
columns: [[
{ field: 'name', title: '页面名称', width: 80 },
{ field: 'id', title: '用户id', width: 80, hidden: true },
]],
keyHandler: {
query: function (keyword) { //【动态搜索】处理
var comgrid = $('#person').combogrid("grid");
var queryParams = comgrid.datagrid('options').queryParams; //设置查询参数
queryParams.keyword = keyword;
comgrid.datagrid('options').queryParams = queryParams;
comgrid.datagrid("reload"); //重新加载
$('#person').combogrid("setValue", keyword);
//将查询条件存入隐藏域
$('#txtId').val(keyword);
}
},
onSelect: function () { //选中处理
var seldata = $('#person').combogrid('grid').datagrid('getSelected');
$('#txtName').val(seldata.name);
$('#txtId').val(seldata.id);
$('#personId').val(seldata.id);
//alert(seldata.id+"--"+seldata.name);
}
}); //取得分页组件对象
var pager = $('#person').combogrid('grid').datagrid('getPager'); if (pager) {
$(pager).pagination({
pageSize: 10, //每页显示的记录条数,默认为10
pageList: [10, 20, 30, 40, 50], //可以设置每页记录条数的列表
beforePageText: '第', //页数文本框前显示的汉字
afterPageText: '页 共 {pages} 页',
displayMsg: '当前显示 {from} - {to} 条记录 共 {total} 条记录',
//选择页的处理
onSelectPage: function (pageNumber, pageSize) { //按分页的设置取数据
getData(pageNumber, pageSize);
//设置表格的pageSize属性,表格变化时按分页组件设置的pageSize显示数据
$('#person').combogrid("grid").datagrid('options').pageSize = pageSize;
//将隐藏域中存放的查询条件显示在combogrid的文本框中
$('#person').combogrid("setValue", $('#txtId').val());
$('#txtName').val('');
},
onChangePageSize: function () {}, //改变页显示条数的处理 (处理后还是走onSelectPage事件,所以设置也写到onSelectPage事件中了)
onRefresh: function (pageNumber, pageSize) { //点击刷新的处理
getData(pageNumber, pageSize); //按分页的设置取数据
$('#person').combogrid("setValue", $('#txtId').val());//将隐藏域中存放的查询条件显示在combogrid的文本框中
$('#txtName').val('');
}
});
} var getData = function (page, pagesize) {
$.ajax({
type: "POST",
url: "${pageContext.request.contextPath}/controller/persons.action",
type : "POST",
data: {
"page" : page,
"pagesize" : pagesize,
"keyword" : $('#txtId').val()
}
error: function (XMLHttpRequest, textStatus, errorThrown) {
$.messager.progress('close');
},
success: function (data) {
console.log(typeof data);
$('#person').combogrid("grid").datagrid("loadData", $.parseJSON(data));
}
}); };
});
</script> </body>
</html>

  后台controller如下:

/**
* 以json数据返回person列表数据
* @param page 当前页序号
* @param pagesize 页面大小
* @param keyword 要搜索的关键字
* @return json数据
*/
@RequestMapping(value = "person")
@ResponseBody
public Map<String, Object> getPersons(@RequestParam("page") int page,
@RequestParam("pagesize") int pagesize,
@RequestParam(value="keyword",required=false) String keyword){ Map<String, Object> result = new HashMap<String, Object>();
int total = personService.countPageByName(kind, keyword);
List<Person> productList = personService.queryPageByName(keyword, pagesize, page);
result.put("total", total);
result.put("rows", productList);
result.put("_pagelines",pagesize); result.put("_currpage", page); return result;
}

EasyUI ComboGrid 分页的更多相关文章

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

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

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

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

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

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

  4. EasyUI DataGrid分页数据绑定

    记录东西感觉很痛苦,总结东西很痛苦,麻烦,不过为了下次的方便和知识的牢固以后要坚持总结. EasyUI DataGrid分页数据绑定 在解决方案中新建两个文件FormMain.aspx(html也可以 ...

  5. EasyUI datagrid 分页Json字符串格式

    //EasyUI datagrid 分页Json字符串格式 //{"total":xx,"rows":[{...},{...}]} total:总数 rows: ...

  6. easyUI的分页,只显示第X 共Y页。改为显示 第X 页 共Y页

    如下图,easyUI的分页,只显示第X 共Y页. 需求需要显示 第X 页 共Y页. 解决办法:在easyui-lang-zh_CN.js更改以下代码,即可.也就是在 “共{pages}页”前面加个 “ ...

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

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

  8. asp.net mvc easyui datagrid分页

    提到 asp.net mvc 中的分页,很多是在用aspnetpager,和easyui datagrid结合的分页却不多,本文介绍的是利用easyui 中默认的分页控件,实现asp.net mvc分 ...

  9. easyUI datagrid 分页参数page和rows

    Struts2获取easyUI datagrid 分页参数page和rows 用pageHelper分页时,只要是能够获取前台传来的两个参数page和rows基本就完成了很大一部分. 获取方法:定义两 ...

随机推荐

  1. 【团队冲刺总结】一个编码人员的反(tu)思(cao)

    消失了半个多月了啊,算算时间,好像确实有近个把月没有好好的写博客来了.我一直很想写博客的,之前有老师问过写博客的动力是什么.我想了想,我觉得可能是我比较喜欢看书吧,不管是专业书还是小说(好吧,我承认, ...

  2. 循序渐进开发WinForm项目(2)--项目代码的分析

    随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了. 其实也许我 ...

  3. oracle中文显示为问号

    在用PL/sql查询时,中文显示为问号.经查证,发现问题为oracle字符集不支持中文导致的.修改oracle字符集,改为支持中文即可. 方法: 第一步:修改注册表. 开始-运行-输入regedit- ...

  4. 关于WPF绘图中的path.data在后台重新赋值的语法

    //XAML语法 <Path Name="path_M" Fill="LawnGreen" Data="M 0 0 L 100 0 L 100 ...

  5. mvc5入门示例博客(有惊喜)

    因为一直做pc客户端,总感觉要被社会淘汰一样,近来时间又有空闲,索性学习一下asp.net mvc开发,试着追赶互联网的潮流. 话说在软件开发中,最费力的还是界面上,太多细节要关注了,从今年起便努力将 ...

  6. vmware linux top si高以及网卡队列、软负载相关优化

    今日,测试公司自行开发的一rpc中间件,期间发现top si的比例很高,且几乎只有一个cpu是繁忙的,其他均基本为0. 经查,si主要是系统软中断,最后确定是网卡导致的系统中断.于是,往上搜了下资料, ...

  7. window下从硬盘安装linux系统iso镜像文件的方法

    首先,需要安装grub2win,http://sourceforge.net/projects/grub2win/ 其次,将iso文件放在grub2可识别的分区, 如c:\abc\iso.iso 最后 ...

  8. zend framework2学习(一)初步入门

    声明:本人菜鸟一枚,由于项目中需要用到zf2框架进行开发,在此记载学习使用过程中的点点滴滴.才疏学浅,请多指教............. ------------------------------- ...

  9. jQuery owlcarousel 旋转木马

    owlcarousel是一款猫头鹰旋转木马插件.OwlCarousel优势兼容所有浏览器支持响应式支持 CSS3 过度支持触摸事件支持 JSON 及自定义 JSON 格式支持进度条支持自定义事件支持延 ...

  10. .NET破解之轻量万能自定义信息管理系统

    一般敢说万能的莫非真有两把刷子.今天来破解试试,看效果好用不. 下载:http://down.chinaz.com/soft/36780.htm 补丁: http://www.t00y.com/fil ...