Datatables 服务器端分页

目录:

  • 我要说两句
  • 前端代码
  • 后端代码

我要说两句

本人上手Web也是时间不长,然后又想快速的出成果,所以就去问度娘和谷歌,最后就选择了前端用bootstrap +jquery,后端直接MVC,在前端能用插件就绝不自己写,然后机缘巧合之下我和 datatables相遇了,用着非常顺手,但是遇到服务器端分页却让我抓狂了2天

前端代码

参数说明
“bServerSide”: true, //指定从服务器端获取数据
“sAjaxSource”: surl, //获取数据的url (一般是action)
“fnServerData”: function(){…} //获取数据的处理函数
sSource:”ControllerName/ActionName” //AjaxSource中指定的地址
aoData: //DataTables定义的参数,是一个数组
fnCallback://服务器返回数据后的处理函数,不一定要实现它,但是你一定要将它放在“fnServerData”参数中

var table;
$(document).ready(function () {
    table = $('#tableGetListCustomerId').DataTable({
        "language": {
            "sProcessing": "处理中...",
            "sLengthMenu": "显示 _MENU_ 项结果",
            "sZeroRecords": "没有匹配结果",
            "sInfo": "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项",
            "sInfoEmpty": "显示第 0 至 0 项结果,共 0 项",
            "sInfoFiltered": "(由 _MAX_ 项结果过滤)",
            "sInfoPostFix": "",
            "sSearch": "搜索:",
            "sUrl": "",
            "sEmptyTable": "表中数据为空",
            "sLoadingRecords": "载入中...",
            "sInfoThousands": ",",
            "oPaginate": {
                "sFirst": "首页",
                "sPrevious": "上页",
                "sNext": "下页",
                "sLast": "末页"
            }
            },
        "sAjaxSource":"ControllerName/ActionName",
        "searching": false,
        "serverSide": true,
        "fnServerData": function (sSource, aoData, fnCallback) {
            aoData.push({ "name": "CUSTOMER_ID", "value": $("#txtCustomerId").val() });
            aoData.push({ "name": "CUSTOMER_NAME", "value": $("#txtCustomerName").val() });
            $.ajax({
                "dataType": 'json',
                "type": "POST",
                "url": sSource,
                "data": aoData,
                "success": fnCallback

            })
        },
        "paging": true,
        "lengthChange": false,
        "ordering": true,
        "iDisplayLength": 10,
        "info": true,
        "autoWidth": false,
        "columns": [
    { "data": "clumnName1" },
    { "data": "clumnName2" }
        ]
    });
    $('#tableGetListCustomerId tbody').on('click', 'tr', function () {
        if ($(this).hasClass('row_selected')) {
            $(this).removeClass('row_selected');
        }
        else {
            table.$('tr.row_selected').removeClass('row_selected');
            $(this).addClass('row_selected');
        }
    });
});

后端代码

public JsonResult GetListPage(string CUSTOMER_ID, string CUSTOMER_NAME, int sEcho, int iDisplayStart, int iDisplayLength)
{
int iTotalRecords = 0;
int iTotalDisplayRecords=0;
List queryList = new List();
queryList = daoCustomerId.CustomerIdList().Where(a => a.CUSTOMER_ID != “”).ToList();
iTotalRecords = queryList.Count;
if (!string.IsNullOrEmpty(CUSTOMER_ID))
queryList = queryList.Where(a => a.CUSTOMER_ID.Contains(CUSTOMER_ID)).ToList();
if (!string.IsNullOrEmpty(CUSTOMER_NAME))
queryList = queryList.Where(a => a.CUSTOMER_NAME.Contains(CUSTOMER_NAME)).ToList();
queryList = queryList.Skip(iDisplayStart).Take(iDisplayLength).ToList();
iTotalDisplayRecords = queryList.Count;
return Json(new { draw = sEcho, recordsFiltered = iTotalRecords, recordsTotal = iTotalDisplayRecords, data = queryList }, JsonRequestBehavior.AllowGet);
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用方法: 支持JAVA和PHP两种后台。 PHP:直接将WebRoot下的文件放到php服务器上直接运行即可,记得启用sqlite3。 JAVA:修改user-manage.js,将访问后台的url由"datasource.php"改为"datasource.jsp",然后将WebRoot下的文件放到tomcat下直接运行。也可使用Eclipse直接导入此项目文件。 简要说明: 使用DataTable默认的ajax交互功能,对传给后台和从后台获取的数据都有命名格式要求,这样一来耦合度较高,不利于后期扩展,不能直接适用于需要跟多种不同前或其他业务交互的项目。本例子主要展示了自行封装请求参数和返回数据的用法,对后台的交互没有任何格式和命名限制。 基于Bootstrap 2.3.2,相关的其他插件包括图标控件FontAwesome、等待提示控件Spinjs(修改版)、弹窗控件lhgdialog(修改版) 主要展现: 封装请求参数(查询、排序、分页,不再需要data、dataFilter和dataSrc) 封装返回数据 自定义查询参数 服务器分页 自行控制和自定义遮罩效果 生成自定义效果的单元格(在线离线) 生成复选框单元格 响应复选框选择事件 生成操作按钮单元格 响应操作栏按钮点击事件 响应行点击事件 渲染回调事件(默认选中第一行) 分页栏增加跳页功能(直接修改了dataTables.bootstrap.js和dataTables.bootstrap.css) CSS实现单元格超长文字省略号显示 CSS实现单元格连续纯字母数字强制换行显示

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值