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的博客 2759

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

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

哲 1180

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 谢谢!

jquery的datatable插件

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

qq_43610925的博客 497

扫地机的CPU只要二十多块?2024第二拆来了

昨天还说到这个机器人的故障,经小鱼拆机后测试和后台网友留言确认,不是防跌落问题,是轮子故障,这个轮子不会动,轮子上有一个限位开关检测机器人是否离开地面的,测试的时候也没有误触发,所以电机存在故障,后面拆电机的时候再检查。最后再留下一个疑问,这个机器人的回充没有用红外管,机器人是如何识别基站进行返回充电的(因为只买了本体,没买充电桩,不确定充电桩的形状,是不是利用点云识别不确定)懂的请留言。全志的R16,封装是 BGA282,那这个板子至少是4层板,小鱼盲猜 6 层板,知道的小伙伴欢迎留言。

生活不止眼前的苟且 1977

02.1 知识图谱工具 Protege的下载安装与使用

Protege的下载安装与使用 本文是王昊奋老师《知识图谱》系列笔记第2.1篇。 文章目录Protege的下载安装与使用0 相关介绍0.0 Protege相关介绍0.1 Protégé的特点0.2 Protégé的用途1 Protege的下载1.1 准备工作:安装配置JAVA环境1.2 官网下载2 Protege的安装2.1 直接解压缩2.2 双击运行3 Protege的使用实例-创建类...

和而不流 7万+

jQuery 表格插件汇总

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

qjfpjie的专栏 789

体素坐标(voxel_coors)在mmdetection3d中的理解

体素坐标(voxel_coors)在mmdetection3d中的理解

weixin_38362784的博客 4217

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

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

zhoujian_911的专栏 479

H3C IPsec over GRE VPN 实验

配置 IPsec over GRE VPN 来连通两端内网

M建的博客 2465

Python量化交易实战:从零搭建你的第一个多因子选股模型(附完整代码)

本文是一份详细的Python量化交易入门实战指南,手把手教你从零搭建第一个多因子选股模型。内容涵盖环境配置、数据获取、因子挖掘与有效性检验、多因子合成以及完整的策略回测与绩效评估,并附有可直接运行的完整代码,帮助初学者快速掌握量化交易的基本概念与实践流程。

resnet7explorer的博客 935

获取DataTable插件表中所有数据

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

weixin_41919354的博客 3409

pytest-bdd封装

简介 pytestbdd主要是用于代码封装 代码封装的好处: 1、提升代码复用率 2、提示测试效率 手工测试–使用框架0代码 流程+数据驱动 产品经理这样的不懂测试的人员–流程驱动 自动化测试–数据驱动 pytest-bdd:流程驱动封装 行为驱动–敏捷开发模式,消除开发/测试对需要了解的歧义 使用方式: 描述需求/用户场景 Feature(需求) Scenario(场景) Given(假设) When(操作步骤) Then(验证,清除) #新建feature 文件之前 需要提取安装支持featrue文.

liao_11的博客 2733

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

嵌入式Linux&Android开发-环境搭建

目录 一、环境要求 二、相关软件&SDK下载 三、环境安装 3.1 VMware Worksation 3.2 Ubuntu1804 3.3 VSCode安装 3.4 Samba服务器搭建 一、环境要求 编译 Android 对机器的配置要求较高: 64 位 CPU 大于12GB 物理内存+交换内存(最好16GB以上) 30GB 空闲的磁盘空间用于构建,源码树另外占用大约 25GB, 如果要编译源码则还需要 150GB 的磁盘空间。 RK官方推荐使用 Ubuntu 16..

嵌入式成长手册 548

华为OD机试双机位C卷:挑选宝石 (C/C++/Python/JAVA/JS/GO)

华为OD机试双机位C卷 挑选宝石,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试-挑选宝石,华为OD机考-挑选宝石。

qq_45776114的博客 1500

解决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

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

JQuery DataTable 详解

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

跳舞的芒果 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

dataTable在此初始化

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

Coco_love24的博客 456

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

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 4902

DataTable学习笔记 - 01

DataTable 是 jQuery 的一个插件。 代码上来吧, <!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

二苟 2693

datatable清空

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

qq_33646205的博客 7949

Datatable常用用法总结

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

luoluo_lj的博客 2995

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的博客 452
上一篇: Bootstrap+AngularJS实现对话框、表单和表格
下一篇: JavaScript需要避免的问题总结
sz阿骏
博客等级 码龄15年 9粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值