jQuery Datatable插件 表格基本初始化

Datatable 表格背景色与导出Excel时有背景色 1.需求描述     最近有这样一个需求,在页面用表格展示数据的时候,赋予相应的背景色,并在导出表格生成excel文件时有对应的背景色,现用jQuery Datatable这款插件完成这项功能。 2.分析     1在页面初始化表的时候,需要有背景色     2在生成excel表时候,需要有背景色 3.代码讲解 1.页面需要导入的js 显然我的Da 阅读详情

jQuery Datatable插件 表格基本初始化

本文介绍jQuery Datatable插件的表格初始化的基本使用,Datatable是目前使用度比较高的前端表格界面插件,可以很方便地创建响应式的表格,容易实现表格的翻页、过滤、排序等功能。


引入文件

<script type="text/javascript" src="./plugin/jquery/jquery-1.11.2.js"></script>
<script type="text/javascript" src="./script/jquery.dataTables-1.10.12.min.js"></script>
<script type="text/javascript" src="datatableController.js"></script>

以上脚本文件依次为jQuery脚本文件,dataTable脚本文件和我们自己编码的dataTable初始化脚本。

<link href="./plugin/bootstrap/css/bootstrap.min.css" rel="stylesheet" />
<link href="./css/jquery.dataTables.min.css" rel="stylesheet"/>
<link href="./css/dataTables.bootstrap.min.css" rel="stylesheet"/>

以上为引入的样式文件,第一个为bootstrap框架样式,其中第二和第三个可以二选一,分别为基于jQuery和Bootstrap的datatable样式。

注意:使用基于jQuery的datatable样式,需要在项目根目录下建立文件夹images,其中放入datatable插件中的资源图片(主要显示排序图标)
这里写图片描述

其中jQuery样式大致为:
这里写图片描述
bootstrap样式:
这里写图片描述

html编码

由于本文介绍的编码方式为在脚本中对表格进行初始化,表格的参数和数据均在脚本中定义,html中只有一个div标签用来定位。

<div class="col-md-10 col-md-offset-1" id="testTable_div"></div>

其中col-md-10 col-md-offset-1表示bootstrap布局,使用中型屏幕时占页面10列(一共12列),offset表示左外边距偏移一列。

js编码

表格的初始化代码都在js脚本中进行。

提示信息

-首先,定义表格的提示信息,可以做国际化,为了看起来方便这里直接赋值:

var language = {
        "processing": "<img src='loading-spinner-grey.gif'/><span>&nbsp;&nbsp;"+"处理中..."+"</span>",
        "lengthMenu": "每页 _MENU_ 条结果",
        "zeroRecords": "没有匹配结果",
        "info": "<span class='seperator'>  </span>" + "总共找到 _TOTAL_ 条结果",
        "infoFiltered": " (从所有 _MAX_ 条记录中得到)",
        "infoEmpty": "共 0 项",
        "emptyTable": "表中数据为空",
        "paginate": {
            "previous": "前页",
            "next": "下页",
            "first": "第一页  ",
            "last": "  尾页"
        }
    };

代码解析:

  • processing 为表格初始化过程中显示的等待信息,这里引入了加载圆圈的动态图并设置文本”处理中…“
  • lengthMenu 为可选择的表格每页显示多少条结果,”_MENU_“对应选择的下拉菜单
  • zeroRecords 为表格搜索过滤结果为空的提示,emptyTable为表空的提示,均显示在表格中
  • info、infoFiltered、infoEmpty均显示在表格外,为表格数据信息
  • paginate 为表格翻页选项,previous、next、first、last对应不同的导航标签
表头初始化

然后,是对表头的初始化,其中表头的字段和参数对应之后填充到表格的数据和属性:

var column=[
            {"data": "id", name:"ID", "orderable":true},
            {"data": "name", name:"Name" , "orderable":false },
            {"data": "gender", name:"Gender" , "orderable":false },
            {"data": "age", name:"Age" , "orderable":false },
           ];

var divId='testTable_div';
var tableId='testTable';

var tableEleStr = '<table class="table table-striped table-bordered table-hover" id='+tableId+'>'
        + '<thead>'
        +'<tr role="row" class="heading" >'
        + '</tr>'
        + '</thead>'
        +'<tbody>'
        +'</tbody>'
        +'</table>';

    $('#'+ divId).append(tableEleStr);

    var trEle = $('#'+ tableId  + ' > thead >tr');
    for ( var one in column){
        var th = '<th>' + column[one].name + '</th>';
        trEle.append(th);
    }

代码解析:

  • 其中column中,data为表头对应每一列的字段,name为表头显示的名称,orderable表示此列是否可排序
  • 之后的代码为使用选择器定位到html中的div标签$(‘#’+ divId),在其中添加表格子元素,并根据column初始化表头
datatable表格初始化

以下为对jQuery插件datatable的调用,初始化表格:

    var table = $("#" + tableId).DataTable({
        "dom": '<"top"frt><"bottom"lip>',
        "language": language,  //language
        "paginate": true,  // page button
        "searching": true,  // search bar
        "autoWidth":true,  //automatically set the column width
        "lengthChange": true,  // record number in each row
        "displayLength": 5,  // row number in each page
        "lengthMenu":[[5,10,20,-1],[5,10,20,"All"]],
        "ordering":true ,  // sort
        "info": true,  // Showing info
        "scrollY": 300,
        "scrollCollapse": true,
        "pagingType": "full",  // page style
        "processing": true,
        "serverSide": false,
        "destroy": true,
        "ajaxSource": "json.txt",
        "columns": column,
        "columnDefs": [
            {

                defaultContent: '',
                targets: [ '_all' ]
            }
        ],
        /*"fnServerData": function (sSource, aoData, fnCallback, oSettings) {                    
               oSettings.jqXHR = $.ajax({
                "type": 'get',
                "url": sSource,
                "dataType": "JSON",
                "success": function (resp) {                                       
                    oSettings.iDraw = oSettings.iDraw + 1;

                    resp = resp.data || [];
                    var data = {};
                    data.aaData = resp;
                    var totalCounts = resp.length;

                    data.iTotalRecords = totalCounts;
                    data.iTotalDisplayRecords = totalCounts;
                    data.sEcho = oSettings;
                    fnCallback(data);
                },
                "error": function(resp) {
                    var data = {};
                    data.aaData = [];
                    var totalCounts = 0;

                    data.iTotalRecords = totalCounts;
                    data.iTotalDisplayRecords = totalCounts;
                    data.sEcho = oSettings;
                    fnCallback(data);
                }
            });

        }*/
    });

代码解析:

  • $(“#” + tableId).DataTable(); 为datatable初始化函数,选择器定位到表格调用
  • DataTable()函数中可设置不同的参数(不设置则使用默认值)
  • dom 参数设置表格控件的显示,
    l - length changing input control
    f - filtering input
    t - The table
    i - Table information summary
    p - pagination control
    r - processing display element
    这里’<”top”frt><”bottom”lip>’表示,在表格上方显示处理提示控件和搜索过滤控件,表格下方显示翻页、数据结果信息和选择显示数据个数控件
  • language 即用之前定义的language变量赋值
  • paginate、searching、autoWidth、lengthChange、ordering、info、processing分别设置boolean表示是否实现翻页、过滤、自动响应列宽度、每页显示数据个数选择、排序、提示信息和处理等待控件
  • “displayLength”: 5 表示每页显示数据个数
    “lengthMenu”:[[5,10,20,-1],[5,10,20,”All”]] 表示下拉控件选择的条目,”All“对应-1即全部显示
  • “scrollY”: 300,
    “scrollCollapse”: true, 两个参数配合使用,表示给定表格固定的高度,在显示数据超过该高度时添加滚动条
  • “pagingType”: “full” 表示翻页控件的格式,另外的格式为numbers、simple、simple_numbers、full_numbers
  • “serverSide”: false, 表示过滤等功能不在服务端处理,在客户端处理(当表格中数据量特别大时,设置为true在服务端处理比较合适)
    “destroy”: true, 表示初始化表格时,把选择器对应已有的表格替换掉

  • “ajaxSource”: “json.txt”, 为读取表格数据的ajax数据源,这里为文本文件
    “columns”: column, 设置为之前定义的column变量
    “columnDefs”: [
    {

            defaultContent: '',
            targets: [ '_all' ]
        }
    ],
    

    columnDefs用来设置列的特定属性,这里表示当传入数据为null或undefined时单元格默认显示空(避免提示错误警告),target为所有列

  • 以上已经实现了表格的初始化,注释的 fnServerData 为对服务端获取数据的处理函数,不自定义的情况下有默认的实现,这里主要在出现error时将表格置空而不是提示错误

注意事项及遇到的问题

以上对datatable使用的说明,特别是参数的意义可以参阅:
https://datatables.net/reference/index

遇到的问题

也遇到一些不容易查到的问题,给出自己的解决方案:

这里写图片描述
- 在 “ajaxSource”: “json.txt” 获取文本文件,直接用浏览器打开网页,会出现xmlhttpRequestError,解决办法为将项目和文本文件都放入tomcat服务端并启动服务,通过服务端获取数据,或者自己启一个服务亦可
- json格式问题:ajaxSource会将json格式文本解析为json对象,文本要符合json格式这里json.txt为
{"data":[{"id":"1","name":"A","gender":"male","age":"25"},{"id":"2","name":"B","gender":"male","age":"25"},{"id":"3","name":"C","gender":"male","age":"25"},{"id":"4","name":"D","gender":"male","age":"25"},{"id":"5","name":"E","gender":"male","age":"25"},{"id":"6","name":"F","gender":"male","age":"25"},{"id":"7","name":"G","gender":"male","age":"25"},{"id":"8","name":"H","gender":"male","age":"25"},{"id":"9","name":"I","gender":"male","age":"25"},{"id":"10","name":"J","gender":"male","age":"25"},{"id":"11","name":"K","gender":"male","age":"25"}]}

  • 且json字段需与columns选项定义的列”data“字段对应(即表头),才能正确填充数据到表格,当json无法匹配时会提示错误,设置columnDefs解决

总结

在使用datatable过程中发现,datatable实现方式比较简单而且比较容易扩展,但也会遇到很多问题查阅API也无法解决,还有1.10版本之后很多参数和方法有了很大不同容易混淆。本文简单介绍datatable表格基本初始化,之后再介绍更加实用的进阶例子。

[jQuery自定义插件] 6 自定义表格插件-jQueryTable 表格作为前端最常用的标签之一,自定义插件怎么能少了它。直接上源码。 阅读详情

相关推荐

DataTables 1.8.2:深入掌握jQuery表格增强插件

本文还有配套的精品资源,点击获取 简介:本文详细介绍了DataTables 1.8.2,一款强大的jQuery表格插件DataTables扩展了HTML表格的功能,支持多种特性如数据加载、排序、过滤、分页和响应式布局。文章涵盖其核心特性,安装与使用步骤,配置选项,以及自定义事件与方法,展示了如何轻松创建交互式和高性能的表格。 1. DataTables 插件介绍...

weixin_35920379的博客 2748

15款提高表格操作的jQuery插件

table表格由于它的浏览器兼容性和复杂的标签嵌套方式,可以算是添加样式最困难的对象之一了。大多数前端er都把网页中的table标签替换为div,主要就是因为div要比table更容易添加CSS样式。但是我们在日常应用中仍然要用到table表格,其中最好的例子就是对照表。今天彬Go将向大家推荐15个jQuery表格插件让你对数据表格进行显示、排序、筛选和操控。如jQuery表格排序插件、jQuer

1173

Jquery插件-table

*插件名:表格(table)优化器 *功能对照表: * 名称 参数 参数描叙 方法描叙 类型 ====>数据加载 * loadData dataSource, 数据源 数据加载JSON或者Array 功能 isTh 是否包含TH文件头 ====>数据获取 * getJSONData - 获取当前数据JSNO格式 功能 * getArrayData- 获取当前数据Array格式 功能 * getStringData- 获取当前数据String格式 功能 ====>效果事件 * edit - 表格可编辑 效果 * septalLine even, 单行样式背景 隔行背景变色显示数据 效果 odd 双行样式背景 * glide tableStyle, table样式 table滑动样式 效果 hoverStrle, 鼠标滑动上来样式 checkStyle 鼠标点击选中样式 ====>通用转换器 * JSONString datas 数据源 JSON转换String 函数 * JSONArray datas 数据源 JSON转换Array 函数 * StringJSON datas 数据源 String转换JSON 函数 如有问题可以指出,大家一起探讨,毕竟我也才学Jquery半年足很多 可以使用Email:1053050580@qq.com 谢谢!

jquerydatatable插件

使用命令:npm install datatables.net安装插件

qq_43610925的博客 493

jQuery 表格插件汇总

本文搜集了大量 jQuery 表格插件,帮助 Web 设计者更好地驾御 HTML 表格,你可以对表格进行横向和竖向排序,设置固定表头,对表格进行搜索,对大表格进行分页,对表格进行滚动,拖放操作等等。这些插件很多都包含详细的教程。希望能对大家的开发有帮助。 jQuery 表格插件 Flexigrid – Web 2.0 Javscript Grid for jQuery - 可变列宽

qjfpjie的专栏 785

第68章 完整定义nopCommerce Jquery DataTable插件初始化学生表格

注意: 该示例程序中的所有渲染实现都通过Jquery Ajax方法 触发指定的URL,根据该URL调用指定的控件器方法,控件器方法经过一系列执行操作后,向Jquery Ajax方法发送JSON格式的渲染数据,最后通过Jquery语言调用JSON格式的渲染数据,把班级下拉控件和学生表格进行局部渲染显示,但是种方式中需要使用大量的Jquery语言,由Jquery语言是非强类型的,所以总是对程序的健壮性有一些若有若无的担心。解决这种焦虑的最好方法就是根据第二种渲染流程,通过指定的控件器方法向cshtml文件中发

zhoujian_911的专栏 478

获取DataTable插件表中所有数据

获取DataTable插件表中所有数据 jquery初始化DataTable: var tab = $('#sendOrdersManagementTable'); var oTab = tab.DataTable({ serverSide: true,//开启服务器模式:启用服务器分页 lengthChange: false,//是否允许用户改变表格每页显示的记...

weixin_41919354的博客 3404

Jquery Data Table插件

Jquery Data Table插件 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <meta charset="ut...

weixin_30545285的博客 80

解决datatable中一个页面有多个初始化datatable分页问题

&lt;ul&gt;    &lt;li id="0"&gt;&lt;/li&gt;    &lt;li id="1"&gt;&lt;/li&gt;    &lt;li id="1"&gt;&lt;/li&gt;&lt;/ul&gt;如果每一个li初始化一个新的表格,就给li加上同的id值,然后在代码中点击获取id值 动

勤勇的博客 3408

JQuery DataTable 详解

之前博主介绍过一种submit局部刷新的办法,但是单单对于table刷新而去绑定form提交显得太过冗重麻烦,今天介绍下jquery dataTable自带的插件fnReloadAjax实现ajax异步请求刷新表格数据的方法。前提准备:导入fnReloadAjax.js,附上下载链接 https://pan.baidu.com/s/1qYRMX9i 第一:实现的效果就是根据查询条件点击查询按钮

跳舞的芒果 1万+

JQuery DataTables获取表格数据

JQuery DataTables引用: &lt;link rel="stylesheet" type="text/css" href="http://cdn.datatables.net/1.10.15/css/jquery.dataTables.css"&gt; &lt;script type="text/javascript" charset="utf8" sr

Gary Leong 4900

dataTable在此初始化

if ($('#datatable1').hasClass('dataTable')) { dttable = $('#datatable1').dataTable(); dttable.fnClearTable(); //清空一下table dttable.fnDestroy...

Coco_love24的博客 455

DataTable学习笔记 - 01

DataTablejQuery 的一个插件。 代码上来吧, <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>DataTable</title> <!-...

ddd77197的博客 164

jQuery - dataTable实现<table>初始化及首列固定

需要用到的脚本文件和样式:jquery.dataTables.js、dataTables.fixedColumns.js、dataTables.bootstrap.css等。 举例,以下是一个冻结列的方法: /** * 初始化表格 * @param tableId * @param iLeftColumns是否需要冻结 * @param fixParam 冻结列数,默认1列 */ function initialSort(tableId, iLe

二苟 2691

datatable清空

$('#listTab').dataTable().fnDestroy();//还原初始化了的datatable     $('#listTab').dataTable().fnClearTable();//清空一下table

qq_33646205的博客 7944

Datatable常用用法总结

什么是Datatable ? Datatables是一款jquery表格插件。它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能。 分页,即时搜索和排序 几乎支持任何数据源:DOM, javascriptAjax 和 服务器处理 支持同主题 DataTables, jQuery UI, Bootstrap, Foundation 各式各样的扩展: Editor, ...

luoluo_lj的博客 2992

JQuery笔记JQuery.DataTable.js使用。

相关文件: https://git.coding.net/HULANG-BTB/JQuery.DataTable.js.git HTML代码: 1 <html> 2 <head> 3 <title>DataTable</title> 4 <link rel=...

Lapple0309的博客 179

jquery初始化ajax调用函数,如何初始化ajax请求的成功jquery函数?

我想在ajax请求完成并且成功得到响应时初始化jquery函数。因为想获得一个表作为Ajax响应,并使用数据表jQuery插件girds如何初始化ajax请求的成功jquery函数?函数初始化这样$(document).ready(function() {$('#data_grid').dataTable();});功能,这将在阿贾克斯成功触发梳理出来的网格响应function showgVali...

weixin_35651070的博客 450
上一篇: Bootstrap+AngularJS实现对话框、表单和表格
下一篇: JavaScript需要避免的问题总结
sz阿骏
博客等级 码龄15年 9粉丝 14原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值