WEB后台开发,如果用的是Bootstrap框架,那这个表格神器你一定不要错过。

官方地址:https://datatables.net/

What?英文不好,没关系咱有中文的 http://datatables.club/

不过我还是建议看英文的,因为比较全面虽然访问的速度慢点,终归能进的去。闲话不过说,先来个小例子吧。

1.先引用一下脚本地址,最好版本是一致的

<link rel="stylesheet" href="dataTables.bootstrap.min.css">
<script src="jquery.dataTables.min.js"></script>
<script src="dataTables.bootstrap.min.js"></script> 

2.配置一下本地化

"oLanguage": {
    "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": "末页",
        "sJump": "跳转"
    },
    "oAria": {
        "sSortAscending": ": 以升序排列此列",
        "sSortDescending": ": 以降序排列此列"
    }
},

  写到这里要说一句,上边这段本地化配置,有没有发现它的命名挺奇怪的,前边都有一个小写的o、s之类的,但是现在官网并不这样命名了,当然这并不影响我们使用它,下边是比较新的配置参数。

language: {
    "decimal": "",
    "emptyTable": "No data available in table",
    "info": "当前显示第 _START_ 至 _END_ 项,共 _TOTAL_ 项。",
    "infoEmpty": "当前显示第 0 至 0 项,共 0 项",
    "infoFiltered": "(由 _MAX_ 项结果过滤)",
    "infoPostFix": "",
    "thousands": ",",
    "lengthMenu": "每页 _MENU_ 项",
    "loadingRecords": "载入中...",
    "processing": "处理中...",
    "search": "搜索:",
    "zeroRecords": "没有匹配结果",
    "paginate": {
        "first": "首页",
        "previous": "上页",
        "next": "下页",
        "last": "末页"
    },
    "aria": {
        "sortAscending": ": 以升序排列此列",
        "sortDescending": ": 以降序排列此列"
    }
}

  如果从开发角度来讲的话,每次都初始化这个配置,挺麻烦的,所以我们可以封装成文件,下个页面引用一下就可以了,接下来创建一个名字为 dataTables.defaults.js 的文件代码如下

$.extend($.fn.dataTable.defaults, {
    language: {
        "decimal": "",
        "emptyTable": "No data available in table",
        "info": "当前显示第 _START_ 至 _END_ 项,共 _TOTAL_ 项。",
        "infoEmpty": "当前显示第 0 至 0 项,共 0 项",
        "infoFiltered": "(由 _MAX_ 项结果过滤)",
        "infoPostFix": "",
        "thousands": ",",
        "lengthMenu": "每页 _MENU_ 项",
        "loadingRecords": "载入中...",
        "processing": "处理中...",
        "search": "搜索:",
        "zeroRecords": "没有匹配结果",
        "paginate": {
            "first": "首页",
            "previous": "上页",
            "next": "下页",
            "last": "末页"
        },
        "aria": {
            "sortAscending": ": 以升序排列此列",
            "sortDescending": ": 以降序排列此列"
        }
    }
});

  我现在我们的语言本地化配置就算结束了,如果单独的文件一定别忘记引用!!

3.下面我们看下别的配置

  • 页面代码很简单
<table id="table" class="table table-condensed  table-hover"> 
</table>
  • 基础配置
var table = $("#table").DataTable({
    lengthMenu: [[20, 40, 60, -1], [20, 40, 60, "All"]],
    sort: false,
    pageLength: 20,
    pagingType: "full_numbers",
    paging: true,
    searching: false, //屏蔽datatales的查询框
    dom: 'rt<"row"<"col-md-4" i><"col-md-8"p>>',
    processing: true,
    serverSide: true,
    columns: [
        { title: "编号", data: "Uid", visible: true },
        { title: "账号", data: "Account" },
        { title: "密码", data: "PassWord" },
        { title: "状态", data: "StatusName" },
        { title: "时间", data: "CreateTime" },
    ],
    ajax: {
        url: '/User/GetUserList',
        type: 'POST'
    }
});

其他配置就不说了,就只说说dom吧,这个配置项是操作 搜索、数据信息、按钮、每页显示多少条这几个选项的的位置

  • l - Length changing 改变每页显示多少条数据的控件
  • f - Filtering input 即时搜索框控件
  • t - The Table 表格本身
  • i - Information 表格相关信息控件
  • p - Pagination 分页控件
  • r - pRocessing 加载等待显示信息
  • < > - div elements 代表一个div元素 <div><div>
  • <"#id" > - div with an id 指定了id的div元素 <div id='id'><div>
  • <"class" > - div with a class 指定了样式名的div元素 <div class='class'><div>
  • <"#id.class" > - div with an id and class 指定了id和样式的div元素 <div id='id' class='class'><div>

要显示什么元素,显示在什么位置自己安排就好了,我比较习惯上边的筛选项自己定义,所以表格上的信息就被我隐藏掉了.

下面展示一下后端的代码,比较简单没有做什么抽象之类的

public ActionResult GetUserList()
{
    UserInfo query = new UserInfo
    {
        PageStart = Convert.ToInt32(Request.Form.Get("start")),
        PageEnd = Convert.ToInt32(Request.Form.Get("length"))
    };

    var data = userInfoService.FindUserInfoList(query).ToList();
    int count = userInfoService.FindUserInfoListCount(query);
    DataTableModel<UserInfo> model = new DataTableModel<UserInfo>()
    {
        draw = Convert.ToInt32(Request.Form.Get("draw")),
        recordsTotal = count,
        recordsFiltered = count,
        data = data,
        error = string.Empty
    };
    var iso = new Newtonsoft.Json.Converters.IsoDateTimeConverter();
    iso.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
    object obj = new object();
    return Content(Newtonsoft.Json.JsonConvert.SerializeObject(model, iso));
}

这里还要说下注意的地方,

Request.Form.Get("draw") 请求次数计数器,每次发送给服务器后又原封返回,不用做什么处理,切记一定要返回,不然错哪你都不知道。
Request.Form.Get("start") 第一条数据的起始位置,从0开始, 页码*页数=start  如果你用的是mysql数据库,就方便了 limit start,length  就可以了
Request.Form.Get("length") 每页显示的条数 

dataTables 接受的参数必须按照下面这样,它才会认识

{
    "draw": 2,
    "recordsTotal": 24,
    "recordsFiltered": 24,
    "data": [
        {
            "Uid": 1,
            "Account": "aaaaaa@hotmail.com",
            "PassWord": "123456",
        },
        {
            "Uid":2,
            "Account": "bbbbb@hotmail.com",
            "PassWord": "456123",
        }
    ],
    "error": ""
}

这样绑定就成功了,其他的参数有不太明白的可以自行百度,或者去官网看一看。



DataTables 配置和使用的更多相关文章

  1. datatables配置及数据传输

    var merchant_url = "index.php?op=merchant"; var table_merchant_setting ={ "ajax" ...

  2. [jQuery]jQuery DataTables插件自定义Ajax分页实现

    前言 昨天在博客园的博问上帮一位园友解决了一个问题,我觉得有必要记录一下,万一有人也遇上了呢. 问题描述 园友是做前端的,产品经理要求他使用jQuery DataTables插件显示一个列表,要实现分 ...

  3. Datatables插件1.10.15版本服务器处理模式ajax获取分页数据实例解析

    一.问题描述 前端需要使用表格来展示数据,找了一些插件,最后确定使用dataTables组件来做. 后端的分页接口已经写好了,不能修改.接口需要传入页码(pageNumber)和页面显示数据条数(pa ...

  4. datatables参数配置详解

    //@translator codepiano //@blog codepiano //@email codepiano.li@gmail.com //尝试着翻译了一下,难免有错误的地方,欢迎发邮件告 ...

  5. jquery.dataTables的探索之路-服务端分页配置

    最近闲来无事想研究下数据表格,因为之前接触过layui和bootstrap的数据表格,本着能学多少学多少的学习态度,学习下dataTables的服务端分页配置.特与同学们一块分享下从中遇到的问题和解决 ...

  6. datatables中的Options总结(3)

    datatables中的Options总结(3) 十.ColReorder colReorder.fixedColumnsLeft 不允许x列重新排序(从左数) colReorder.fixedCol ...

  7. datatables中的Options总结(2)

    datatables中的Options总结(2) 五.datatable,列 columnDefs.targets 分配一个或多个列的列定义. columnDefs 设置列定义初始化属性. colum ...

  8. JQuery插件之Jquery.datatables.js用法及api

    1.DataTables的默认配置 $(document).ready(function() { $('#example').dataTable(); } ); 示例:http://www.guoxk ...

  9. jquery.datatables中文使用说明

    http://www.cnblogs.com/taizhouxiaoba/archive/2009/03/17/1414426.html 本文共四部分:官网 | 基本使用|遇到的问题|属性表 一:官方 ...

随机推荐

  1. Android Studio 将工程作为第三方类库的步骤

    一.将工程的module名称修改为自己要添加的类库名称 1.选中module文件夹右键到Rename项 2.选中Rename module项 3.修改为自己的名称,如VolleyLibary 二.修改 ...

  2. SQL从入门到基础 - 04 SQLServer基础2(数据删除、数据检索、数据汇总、数据排序、通配符过滤、空值处理、多值匹配)

    一.数据删除 1. 删除表中全部数据:Delete from T_Person. 2. Delete 只是删除数据,表还在,和Drop Table(数据和表全部删除)不同. 3. Delete 也可以 ...

  3. Hadoop源码解析之 rpc通信 client到server通信

    rpc是Hadoop分布式底层通信的基础,无论是client和namenode,namenode和datanode,以及yarn新框架之间的通信模式等等都是采用的rpc方式. 下面我们来概要分析一下H ...

  4. Knockoutjs官网翻译系列(三) 使用Computed Observables

    书接上回,前面谈到了在视图模型中可以定义普通的observable属性以及observableArray属性实现与UI元素的双向绑定,这一节我们继续探讨第三种可实现绑定的属性类型:computed o ...

  5. asp.net能不托管吗?

    弱弱地问一句,整个部署在IIS中的asp.net项目能不托管吗? 或者说有没有用纯粹的非托管语言(比方说C语言)写的非托管asp.net项目?

  6. 不要依赖hibernate的二级缓存

    一.hibernate的二级缓存   如果开启了二级缓存,hibernate在执行任何一次查询的之后,都会把得到的结果集放到缓存中,缓存结构可以看作是一个hash table,key是数据库记录的id ...

  7. python3中文字符编码问题

    最近在进行网络爬虫时,被中文的编码问题搞得很头疼,特别是在windows环境下. 1.爬取到的中文网页内容,在解析时出现解析错误 一般情况下,我们都是用urllib中的相关函数,进行web页面的爬取, ...

  8. 关于PHP加速eAccelerator、Xcache、APC和Zend Optimizer

    以前只关注过Zend Optimizer,因为高胖子的书就是这样教的,但是遇到奇葩公司的面试题提问你知道多少个php加速器/缓存,我一下子楞了,因为我所知道的php5.2.x只用过Zend Optim ...

  9. cocos2d(粒子效果编辑器)

    ParticleDesigner  for  Mac下载地址:http://www.cocoachina.com/bbs/read.php?tid=108339 最近在做一款粒子编辑器 其实就是在co ...

  10. 图的建立——邻接表表示(C语言+VC6.0平台)

    图是一种重要而且相对复杂的数据结构,在实际编程中非常有用.邻接表是图的主要表示形式之一,是一种链接表表示方法. #include<stdio.h> #include<stdlib.h ...