easyui datagrid 客户端搜索、分页、排序

easyui datagrid的排序默认是服务器端排序,可以用sorter实现客户端排序[2];客户端分页可用filter实现[3];客户端搜索同样可以用filter实现。

不多说直接上代码:

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<meta name="keywords" content="jquery,ui,easy,easyui,web">
	<meta name="description" content="easyui help you build your web page easily!">
	<title>jQuery EasyUI Demo</title>
	<link rel="stylesheet" type="text/css" href="http://www.jeasyui.com/easyui/themes/default/easyui.css">
	<link rel="stylesheet" type="text/css" href="http://www.jeasyui.com/easyui/themes/icon.css">
	<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"></script>
	<script type="text/javascript" src="http://www.jeasyui.com/easyui/jquery.easyui.min.js"></script>

	<script type="text/javascript">
		    $(function(){
            $('#tt').datagrid({loadFilter:pagerFilter}).datagrid();
        });

	function doSearch(){
    $('#tt').datagrid({searchValue: $('#search_name').val()});
  }

       function mysort(a,b){
				   return (a > b ? 1 : -1);
       }

        function pagerFilter(data){
            if (typeof data.length == 'number' && typeof data.splice == 'function'){
                data = {
                    total: data.length,
                    rows: data,
                    originalTotal: data.length
                }
            }
            var dg = $(this);

            var opts = dg.datagrid('options');

            if (!data.originalRows){
                data.originalRows = (data.rows);
            }

            if (opts.searchValue) {
            	data.currOriginalRows = [];
            	for (var k in data.originalRows) {
            		row = data.originalRows[k];
            		if(row.name.match(opts.searchValue)) {
            			data.currOriginalRows.push(row);
            		}
            	}
            	data.total = data.currOriginalRows.length;
            	data.originalTotal;
            }
            else {
            	data.currOriginalRows = data.originalRows;
            	data.total = data.originalTotal;
            }

            var pager = dg.datagrid('getPager');
            pager.pagination({
                onSelectPage:function(pageNum, pageSize){
                    opts.pageNumber = pageNum;
                    opts.pageSize = pageSize;
                    pager.pagination('refresh',{
                        pageNumber:pageNum,
                        pageSize:pageSize
                    });
                    dg.datagrid('loadData',data);
                }
            });

            var start = (opts.pageNumber-1)*parseInt(opts.pageSize);
            var end = start + parseInt(opts.pageSize);
            data.rows = (data.currOriginalRows.slice(start, end));
            return data;
        }

  </script>
</head>
<body>
	<h1>DataGrid</h1>

	<table id="tt" title="Column Group" class="easyui-datagrid" style="width:1060px;height:390px"
			url="data/items7.json"
			singleSelect="true" iconCls="icon-save" rownumbers="true" pagination="true"
			toolbar="#tb"
			remoteSort="false">
		<thead>
			<tr>
				<th field="name" width="180" align="right" sortable="true" sorter="mysort">name</th>
				<th field="url" width="680" align="right">url</th>
			</tr>
		</thead>
	</table>

	<div id="tb" style="padding:3px">
    <span>name</span>
    <input id="search_name" style="line-height:26px;border:1px solid #ccc">
    <a href="#" class="easyui-linkbutton" plain="true" onclick="doSearch()">Search</a>
  </div>

</body>
</html>

参考:

[1] http://www.jeasyui.com/tutorial/datagrid/datagrid24.php

[2] http://www.jeasyui.com/tutorial/datagrid/datagrid14.php

[3] http://blog.hiter.org/2013/07/realization-of-easyui-datagrid-paging-at-the-front-desk.html

easyui datagrid 客户端搜索、分页、排序

时间: 2024-10-02 17:54:51

easyui datagrid 客户端搜索、分页、排序的相关文章

jQuery EasyUI datagrid实现本地分页的方法

本文实例讲述了jQuery EasyUI datagrid实现本地分页的方法.分享给大家供大家参考.具体如下: 一般分页都是后台做,前端做无论从哪方面考虑都不合适.但是有的时候还是有这种需求. 这里重点用到了pagination的监听,以及JS数组的slice方法来完成.代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 3

.net MVC模式下easyui datagrid控件分页

此参照一位仁兄代码,稍作修改 视图代码: <div id="tab" class="easyui-tabs" data-options="tools:'#tab-tools'" style="width:800px;height:400px"> <div title="****" style="padding:0px;"> <div class="

使用redis完成搜索/分页/排序

功能:根据用户展示pn的相关信息,能搜索具体的pn, 可以分页 思路:redis常用结构第一就想到了hash,可以搜索和存储信息:Sorted Set 可以搜索和截取 将Pn存储在两种结构中,先从set分页后,在去hash获取具体内容 数据格式: '用户ID1' => [ 'pnNumber1' => [ 'pnName' => 'E', 'pnCategory' => 'A', 'pnDesc' => 'C' ], 'pnNumber2' => [ 'pnName'

中继器的使用——搜索/分页/排序

1.搜索: 1)单一条件搜索: 步骤: 判断输入是否为空: 不为空,按输入的条件检索: 为空,展示全部 不为空的用例: 为空的用例: 2)组合条件搜索 步骤: 姓名.部门都不为空: 姓名为空,部门不为空: 姓名不为空.部门为空: 姓名.部门为空 姓名.部门都不为空的情况设置如下: 姓名筛选: 部门筛选: fx设置: 2.排序: 为增大排序点击范围,使用"热区",在热区中添加点击排序事件 3)分页 首页: 上一页/下一页/尾页 页码显示设置方法: 新增文本标签,清空内容,控件命名:页码显

asp.net mvc easyui datagrid分页

提到 asp.net mvc 中的分页,很多是在用aspnetpager,和easyui datagrid结合的分页却不多,本文介绍的是利用easyui 中默认的分页控件,实现asp.net mvc分页. easyui datagrid分页要求数据采用的格式 :{total:2,row:[]}, 在asp.net mvc 中服务器端只要返回这符合这样格式的json数据就好. 页面前端: 服务器端: 附带asp.net 结合 easyui 增删改查的例子: asp.net mvc easyui d

jQuery EasyUI DataGrid在MVC中的运用-基本属性并实现分页

※ datagrid的基本属性和方法  ※ datagrid分页在前后台的实现 最终效果:    与视图显示对应的view model   public class Book public string ItemId { get; set; } public string ProductId { get; set; } public decimal ListPrice { get; set; } public decimal UnitCost { get; set; } public strin

EasyUI Datagrid 分页

EasyUI Datagrid 分页,两种情况 第一种,向后台请求数据,点击分页请求一次,点击排序请求一次.使用表格自带的ajax. box.datagrid({ url: '', //后台请求地址 queryParams: {'name':'','age':''},//向后台传参 width: '100%', height: '500px', fitColumns: true, singleSelect:true, remoteSort:true, pageList : [ 5, 10, 20

easyui datagrid 分页略解

easyui datagrid 本身自带了分页功能. 但是这个需要你自己控制. 在后台可以得到两个datagrid的参数,rows 和page.其中rows是每页要显示的个数,page是第几页.单纯的设置rows是不行 的,datagrid真正显示的是你 从数据库里得到的真正条数,应该用rows当查询条件,得到rows条才行. 传到前台的json传应该是这样的: {"total":50,"rows":[{"sex":"nan16&quo

SQL 可搜索 可排序 可分页存储过程 适用于sql 2008以上

-- ============================================= -- Author: 蜘蛛王 -- Create date: 2015-10-29 -- Description: 可搜索 可排序 可分页存储过程 适用于sql2008以上 -- (非常重要,请认真使用) -- ============================================= create PROCEDURE dbo.list ( @table varchar(1000),