最近在项目中又使用Datatables的一个有趣功能,官网列子如下图:

点击“+”,展开列表,再次点击收缩。

官网的列子点击展开后的数据也是原来行中的数据,这边有了一个想法是否可以利用Ajax去动态加载数据,让“+”实现主从表的功能?

分析后觉得可以,动手实验。

首先,敲代码去实现不带“+”的表格,这个应该很简单。

然后加入一列,让第一列展示一个“+”图片。

     var table = $('#example').DataTable({
"bSort": false, //排序设置为False
"bFilter": false,//搜索设置为False
"sAjaxSource": "/XXXX/XXXX/XXXX",
"aoColumns": [
{
"mDataProp": "Id",
"className": 'details-control', //运用样式来加载图片
"render": function (data, type, row) {
return ''; //关键,让第一列什么都不现实
}
},
{
"mDataProp": "Name"
}, { "mDataProp": "WorkDay" }
]
});

Datatables

其中,CSS的样式可以参考官网列子:

 td.details-control {
background: url('../resources/details_open.png') no-repeat center center;
cursor: pointer;
}
tr.shown td.details-control {
background: url('../resources/details_close.png') no-repeat center center;
}

CSS代码

接下来,就是如何让点击“+”时展开并加载数据,添加监听事件:

     //对TR中每行扩展,缩小添加事件
$('#example tbody').on('click', 'td.details-control', function () {
var tr = $(this).closest('tr');
var row = table.row(tr); var employeeId = row.data().EmployeeID;
var workDate = row.data().WorkDate; if (row.child.isShown()) {
row.child.hide();
tr.removeClass('shown');
}
else {
//通过Ajax获取从表信息
$.ajax({
url: "/XX/XXX/XXX",
type: "Get",
data: { "XXX": XXX, "XX": XXX },
success: function (data) {
row.child(format(data)).show();
tr.addClass('shown');
}
});
}
});

添加监听事件

其中format函数需要利用Ajax返回数据实现动态表格也就是用js拼接Html代码:

     //动态添加表格
function format(data) {
var total = data.total; //通过JSON数据创建table表
var tableHtml = '<div class="row"><div class="col-sm-1"></div><div class="col-sm-11"><table class="table table-striped table-condensed table-bordered table-hover"><thead>' +
'<tr><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td></td></tr></thead>';
for (var i = 0; i < total; i++) {
var d = data.data[i];
if(i%2==0){//隔行颜色不同设置
tableHtml += '<tr class="success">';
} else
{
tableHtml += '<tr>'
}
tableHtml +=
'<td style="vertical-align: middle">' + d.XXX.substr(0, 10) + '</td>' +
'<td style="vertical-align: middle">' + d.XXX + '</td>' +
'<td style="vertical-align: middle">' + d.XXX + '</td>' +
'<td style="vertical-align: middle">' + d.XXX + '</td>' +
'<td style="vertical-align: middle">' + d.XXX + '</td>' +
'<td style="vertical-align: middle"><button class="btn btn-danger btn-xs" type="btn" onclick="deleteItem(\'' + d.Id + '\')">删除</button></td>' +
'</tr>';
}
tableHtml += '</table></div></div>';
return tableHtml;
}

动态拼接表格

Jquery Datatables(三)的更多相关文章

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

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

  2. jQuery datatables

    jQuery datatables 属性,用例 参考:http://datatables.club/example/ http://blog.csdn.net/mickey_miki/article/ ...

  3. jQuery DataTables 插件使用笔记

    初始化 在页面中 <!DOCTYPE html> <html> <head> <link rel="stylesheet" type=&q ...

  4. JQuery Datatables(一)

    最近项目中用了Bootstrap的样式风格,控件用了JQuery Datatables,主要有几下几点目标: 实现BootStrap风格的table,使用Ajax获取数据,并有勾选项 可以实现全选,单 ...

  5. JQuery DataTables Editor---只修改页面内容

    近来在工作中需要对JQuery DataTables进行增,删,改的操作,在网上找了一些资料,感觉比较的好的就是(http://editor.datatables.net/)文章中所展示的操作方法(如 ...

  6. jquery datatables api (转)

    学习可参考:http://www.guoxk.com/node/jquery-datatables http://yuemeiqing2008-163-com.iteye.com/blog/20069 ...

  7. 最全的jquery datatables api 使用详解

    学习可参考:http://www.guoxk.com/node/jquery-datatables http://yuemeiqing2008-163-com.iteye.com/blog/20069 ...

  8. jquery datatables api

    原文地址 学习可参考:http://www.guoxk.com/node/jquery-datatables http://yuemeiqing2008-163-com.iteye.com/blog/ ...

  9. jQuery dataTables四种数据来源[转]

    2019独角兽企业重金招聘Python工程师标准>>> 四种数据来源 对于 dataTables 来说,支持四种表格数据来源. 最为基本的就是来源于网页,网页被浏览器解析为 DOM ...

随机推荐

  1. 【转】ios中@class和 #import 的使用时机

    代码中会发现有部分#import操作写在m文件中,而h文件仅仅使用@class进行声明,为什么不直接把#import放到h文件中呢? 这是因为h文件在修改后,所有import该h文件的所有文件必须重 ...

  2. Delphi TcxTreelist 表格左边总是缩进去 ,好像有偏移 解决方法

    1.  TcxTreelist的表格总是总是缩进去,如下效果 : 但是,新建一个没有偏移 ,经过观察,原来在  属性Images造成的,  把imgToolbars去除就可以了. 效果:

  3. 记录一次MVC3升级MVC4遇到的问题

    前些天,项目组将项目从mvc3升级至mvc4,完了之后,发现突然涌现出一大堆问题.主要是在前端,Razor引擎升级导致的. Razor是从mvc3开始引入的,用过mvc2的就会知道,Razor用起来确 ...

  4. Eclipse修改字体大小

    1.MyEclipse|Window|General|Appearance|Colors and Fonts->点击Text Font->Edit

  5. 380. Insert Delete GetRandom O(1)

    经过昨天的消沉 今天我振作了 设计个数据结构,添加,删除,随机获取都是O(1). 怎么会有这么牛逼的数据结构,所以肯定相应的要耗费空间. 添加和获取耗时O(1)是Array的特性,或者说是Map/Ta ...

  6. c#+ArcEngine中的IGroupLayer的用法

    转自羊子雄起原文c#+ArcEngine中的IGroupLayer的用法 在AE开发中,我们知道axMapControl.LayerCount能获取图层的数量,但是这种方法不能获取到图层组里面的图层, ...

  7. JavaScript实现遮罩层

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. java 递归函数

    一.递归函数,通俗的说就是函数本身自己调用自己...  如:n!=n(n-1)!  你定义函数f(n)=nf(n-1)  而f(n-1)又是这个定义的函数..这就是递归  二.为什么要用递归:递归的目 ...

  9. Android MediaPlayer Error/Info Code

    1. 常见错误 error(-38, 0) 我觉得-38表示在当前的MediaPlayer状态下,不能运行你的操作. 详细怎样做请參考:Android MediaPlayer 另外我在其它资料中.发现 ...

  10. JavaScript读取txt文本文件方法详解

    http://blog.163.com/sophie8910@126/blog/static/8304612620122834121264/ 第一步:创建一个可以将文件翻译成文件流的对象. Var f ...