datatable表格框架服务器端分页查询设置

js代码如下:
$(‘#mytable‘).dataTable(
        {
            "bServerSide": true, //开启服务器模式,使用服务器端处理配置datatable。注意:sAjaxSource参数也必须被给予为了给datatable源代码来获取所需的数据对于每个画。 这个翻译有点别扭。开启此模式后,你对datatables的每个操作 每页显示多少条记录、下一页、上一页、排序(表头)、搜索,这些都会传给服务器相应的值。
            "sAjaxSource": "ajax.php", //给服务器发请求的url
            "aoColumns": [ //这个属性下的设置会应用到所有列,按顺序没有是空
                {"sDefaultContent": ‘‘},//checkbox column 相当于占位符,等待填充。也可以指定值如 {"mData": ‘ip‘}
                {"sDefaultContent": ‘‘},//ip column
                {"sDefaultContent": ‘‘},//nip column
                {"sDefaultContent": ‘‘},//role column
                {"sDefaultContent": ‘‘},//gamenserver column
                {"sDefaultContent": ‘‘},//serverid column
                {"sDefaultContent": ‘‘},//status column
                {"sDefaultContent": ‘‘},//remark column
                {"sDefaultContent": ‘‘},//ctime column
                {"sDefaultContent": ‘‘, "sClass": "action"},//sClass 表示给本列加class
            ],
            "aoColumnDefs": [//和aoColums类似,但他可以给指定列附近爱属性
                {"bSortable": false, "aTargets": [0,7,9]},  //这句话意思是第7,9列(从0开始算)不排序

            ],
            "aaSorting": [[1, "asc"]], //默认排序

            "fnRowCallback": function(nRow, aData, iDisplayIndex) {// 给各列填充内容
                $(‘td:eq(0)‘, nRow).html(‘<label><input type="checkbox" id="hids[]" value="‘+aData.id+‘-‘+aData.status+‘" name="hids[]"></label>‘);

                $(‘td:eq(2)‘, nRow).html(aData.nip);

                var role = aData.role.split(‘ ‘);
                var href = "";
                for(var i=0;i<role.length;i++){
                    href += ‘<a href="host.php?ser=‘+role[i]+‘">‘+role[i]+‘</a> ‘;
                }
                $(‘td:eq(3)‘, nRow).html(href);

                $(‘td:eq(4)‘, nRow).html(aData.gameserver);
                $(‘td:eq(5)‘, nRow).html(aData.serverid);
                $(‘td:eq(7)‘, nRow).html(aData.remark);
                $(‘td:eq(8)‘, nRow).html(aData.ctime);

                if (aData.status == 1) {
                    if(aData.hostscreenid){
                        $(‘td:eq(1)‘, nRow).html(‘<a href="http://11.111.111.11:8081/screen/‘+aData.hostscreenid+‘"><span style="color:red;">‘+aData.ip+‘</span></a>‘);
                    }else{
                        $(‘td:eq(1)‘, nRow).html("<span style=‘color:red;‘>"+aData.ip+"</span>");
                    }
                    $(‘td:eq(6)‘, nRow).html("<span style=‘color:red;‘>线下</span>");
                } else if (aData.status == 0) {
                    if(aData.hostscreenid){
                        $(‘td:eq(1)‘, nRow).html(‘<a href="http://11.111.111.11:8081/screen/‘+aData.hostscreenid+‘">‘+aData.ip+‘</a>‘);
                    }else{
                        $(‘td:eq(1)‘, nRow).html(aData.ip);
                    }

                    $(‘td:eq(6)‘, nRow).html("<span>线上</span>");
                }

                $(‘td:eq(9)‘, nRow).html(‘<a href="host.php?op=del&id=‘+aData.id+‘"> <button class="btn btn-danger btn-sm">删除</button> </a> <button class="btn btn-success btn-sm" data-toggle="modal"data-target="#myModal‘+aData.id+‘">编辑 </button> ‘);
                return nRow;
            },

        }
    );
 1 服务器端php代码
 2 $sEcho = $_GET[‘sEcho‘];
 3 $start = $_GET[‘iDisplayStart‘];//从多少开始
 4 $length = $_GET[‘iDisplayLength‘];//数据长度
 5 $sort_th = $_GET[‘iSortCol_0‘];//被排序的列
 6 $sort_type = $_GET[‘sSortDir_0‘];//排序规则
 7
 8 if(!empty($_GET[‘sSearch‘])){
 9     $search = $_GET[‘sSearch‘];
10 }
11
12 $where = "";
13 $order = "";
14 if ($search) {
15     $where = " where concat( xx,xx,xx,xx) like ‘%$search%‘ ";//查询
16 }
17
18 if ($sort_th == 1) {
19     $order = " order by xx " . $sort_type . " ";
20 } elseif ($sort_th == 2) {
21     $order = " order by xx " . $sort_type . " ";
22 } elseif ($sort_th == 4) {
23     $order = " order by xx " . $sort_type . " ";
24 } elseif ($sort_th == 4) {
25     $order = " order by xx " . $sort_type . " ";
26 } elseif ($sort_th == 5) {
27     $order = " order by xx " . $sort_type . " ";
28 } elseif ($sort_th == 6) {
29     $order = " order by xx " . $sort_type . " ";
30 } elseif ($sort_th == 8) {
31     $order = " order by xx " . $sort_type . " ";
32 }
33 $condition = $where . $order;
34
35 $hosts = getLimitRow("xx,xx,xx,xx", ‘table‘, $condition, $start, $length);
36 $count = getRecordCount(‘table‘);
37 if(count($hosts) > 0){
38     $host_screenid = getScreenid();
39     foreach ($hosts as $index => $values) {
40         foreach ($values as $field => $value) {
41             if ($values[‘status‘] == 0) {
42                 $status_str = toutf8(‘线上‘);
43             } else {
44                 $status_str = toutf8(‘线下‘);
45             }
46             $aaData[$index][$field] = toutf8($value);
47             $aaData[$index][‘statusstr‘] = $status_str;
48             $aaData[$index][‘hostscreenid‘] = $host_screenid[$aaData[$index][‘ip‘]];
49         }
50     }
51
52     if ($search) {
53         $dcount = getRecordCount(‘table‘, "where concat( xxx,xx,xx)    like ‘%$search%‘ ");
54     } else {
55         $dcount = $count;
56     }
57     $json_data = array(‘sEcho‘ => $sEcho, ‘iTotalRecords‘ => $count, ‘iTotalDisplayRecords‘ => $dcount, ‘aaData‘ => $aaData);
58     echo json_encode($json_data);
59     exit;
60 }else{
61     $aaData = array();
62     $json_data = array(‘sEcho‘ => $sEcho, ‘iTotalRecords‘ => $count, ‘iTotalDisplayRecords‘ => 0, ‘aaData‘ => $aaData);
63     echo json_encode($json_data);
64 }
时间: 2024-10-27 08:19:14

datatable表格框架服务器端分页查询设置的相关文章

ThinkPhp框架:分页查询和补充框架知识

上一篇的随笔写的是基本操作,现在可以做一些高级操作,例如有条件的查询数据,有分页的条件查询数据 一.一个条件的查询数据 查询数据自然是先要显示出数据,然后根据条件进行查询数据 (1)显示出表的数据 这个方法我还是写在了HomeController.class控制器文件中 (1.1)写了一个方法shouye() 1 2 3 4 5 6 7 public function shouye() {     $n = M("nation");   //数据库中的表     $arr = $n-&

springmvc + jquery datatable + ajax实现动态分页查询

网上关于jquery datatable的例子很多,但结合springmvc的例子很少,搞了2天才把这个弄明白,现在记录下来,作为学习笔记. 1.导入所需文件 (1) jquery.dataTables.css (2) jquery.js (3) jquery.dataTables.js 2.datatable.jsp <%@ page language="java" contentType="text/html; charset=utf-8" pageEnc

myBatis学习笔记(10)——使用拦截器实现分页查询

1. Page package com.sm.model; import java.util.List; public class Page<T> { public static final int DEFAULT_PAGE_SIZE = 20; protected int pageNo = 1; // 当前页, 默觉得第1页 protected int pageSize = DEFAULT_PAGE_SIZE; // 每页记录数 protected long totalRecord = -1

框架 day49 BOS项目练习3(修复window控件BUG,添加/修改/作废取派员,datagrid使用,分页查询(DetachedCriteria离线),formatter函数)

BOS项目笔记第3天 1.    修复window控件bug 把弹出窗口拖动到浏览器窗口外之后无法再拖动     将提供的outOfBounds.js文件复制到项目中     在需要修复的jsp页面引入js文件,可以阻止控件拖出窗口 <script src="${pageContext.request.contextPath }/js/easyui/outOfBounds.js" type="text/javascript"></script&

框架 day50 BOS项目 4 批量导入(ocupload插件,pinyin4J)/POI解析Excel/Combobox下拉框/分区组合条件分页查询(ajax)/分区数据导出(Excel)

知识点: 批量导入(ocupload插件,pinyin4J /POI解析Excel(apache POI) /区域分页查询 /Combobox下拉框 /分区组合条件分页查询(ajax) /分区数据导出(Excel下载) BOS项目笔记第4天 1.    区域批量导入功能 *Ajax不支持文件上传. *上传并且不刷新上传页面原理: Target到一个0,0,0的隐藏iframe里,造成一个没有刷新的假象 <form target="myIframe" action="ab

Java_Web三大框架之Hibernate+jsp+HQL分页查询

分页查询无处不在.使用Hibernate+jsp+HQL进行分页查询. 第一步:编写房屋实体类和House.hbm.xml映射. /* * 房屋实体类 */ public class House { private int id;//房屋id private HouseType type;//房屋类型 private Users2 user;//用户 private Street street;//街道 private String title;//标题 private String descr

ssh框架中的分页查询

ssh中的分页查询是比较常用的,接下来我用代码来介绍如何实现一个分页查询 首先建立一个Model用来储存查询分页的信息 package com.haiziwang.qrlogin.utils; import java.util.List; public class prospage<T> { private int page; // 当前页数 private int totalCount; // 总记录数 private int totalPage; // 总页数 private int er

Django框架08 /聚合查询、分组、F查询和Q查询、执行原生sql、设置 sql_mode

目录 Django框架08 /聚合查询.分组.F查询和Q查询.执行原生sql.设置 sql_mode 1.聚合查询 2.分组 3.F查询和Q查询 4.执行原生sql(了解) 5.展示sql的 6.设置 sql_mode Django框架08 /聚合查询.分组.F查询和Q查询.执行原生sql.设置 sql_mode 1.聚合查询 aggregate(*args, **kwargs) aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典.键的名称是聚合值

框架学习日志(4):如何通过Ajax进行分页查询并绑定数据?

需求设定 1.在页面中通过Ajax发送请求至程序后端对User表进行分页查询,将数据展示至页面上: 2.要求显示字段:主键.姓名.年龄.出生年份.性别.职位: 3.需要统计总数.可上下翻页.可指定页跳转: User表 Position字段,int型,值范围0-5,依次工作职位:实习生.普通职工.资深职工.团队组长.部门经理.公司经理. 以上为情景设定,接下来进入代码实战. 新建类库,搭建开发流程 User表属于账户管理模块,所以我们将新建的类库取名为Account. 分别在各层建立如下类库.文件