jquery.dataTables自定义操作列的实现
话不多说,首先肯定还是先引用两个插件,jquery插件和jquery.dataTables插件;然后 javaScript 代码如下;都是一些比较常用的参数,本示例是通过ajax后台分页渲染实现的列表;具体可参考;
本篇主要讲新增自定义列,表格头部thead中新增操作列
Html代码:
<table class="ax-table ax-hover ax-stripe ax-border ax-align-left" id="airport"> <thead> <tr> <th>序号th> <th>名称th> <th>性别th> <th>创建时间th> <th>昵称th> <th>企业代码th> <th>操作th> tr> thead> table>
然后在js中的DataTable初始化中,添加 columnDefs ;第一个大括号里是对表格的第六列添加样式;最后一列是新增的操作列,主要是对数据的预览和删除;这里的data的值通过打印发现是返回信息中未用到的Name字段,并不是我们想要的id;
id的实际取值格式为full.id,可以自行打印试下。
columnDefs: [ // 将companyCode列变为红色 { "targets": [5], // 目标列位置,下标从0开始 "data": "salary", // 数据列名 "render": function (data, type, full) { // 返回自定义内容 return "" + data + ""; } }, // 增加一列,包括删除和修改,同时将我们需要传递的数据传递到链接中 { "targets": [6], // 目标列位置,下标从0开始 "data": "name", // 数据列名 "render": function (data, type, full) { // 返回自定义内容 console.log(data); return "预览 删除"; } } ]
完整的dataTable初始化代码如下:
JavaScript代码:
$('#airport').DataTable({
processing: true,
serverSide: true, //服务端分页
paging: true,
pageLength: 10,//分页大小
deferRender: true,
// "sAjaxDataProp" : "aData",//是服务器分页的标志,必须有
// "fnServerData": retrieveData,//分页回调函数
ajax: function (data, callback, settings) {//ajax配置为function,手动调用异步查询
var searchParams = {};
searchParams.pageSize = data.length;
searchParams.pageIndex = data.start % data.length === 0 ?
(data.start / data.length + 1) : ((data.start % data.length) + 2);
$.ajax({
type: "post",
url: "/User/GetJson",
cache: false, //禁用缓存
data: searchParams, //传入已封装的参数
dataType: "json",
success: function (res) {
data.pageNum += 1;
var lists = res;
//封装返回数据,这里仅演示了修改属性名
var returnData = {};
returnData.draw = data.draw;//这里直接自行返回了draw计数器,应该由后台返回
returnData.recordsTotal = lists.pages;
returnData.recordsFiltered = lists.total;//后台不实现过滤功能,每次查询均视作全部结果
returnData.data = lists.data;
//关闭遮罩
//$wrapper.spinModal(false);
//调用DataTables提供的callback方法,代表数据已封装完成并传回DataTables进行渲染
//此时的数据需确保正确无误,异常判断应在执行此回调前自行处理完毕
if (searchParams) {
$.extend(searchParams, searchParams);
}
callback(returnData);
},
error: function (
XMLHttpRequest,
textStatus,
errorThrown) {
Toast('查询失败', 'warning', 'danger');
}
});
},
//设置数据
columns: [
{ data: "id", defaltContent: 0 },
{ data: "name", defaultContent: "空" },
{ data: "sex", defaultContent: "未知性别" },
{ data: "nickName", defaultContent: "空" },
{ data: "createTime", defaultContent: "未知" },
{ data: "companyCode", defaultContent: "空" }
],
columnDefs: [
// 将companyCode列变为红色
{
"targets": [5], // 目标列位置,下标从0开始
"data": "salary", // 数据列名
"render": function (data, type, full) { // 返回自定义内容
return "" + data + "";
}
},
// 增加一列,包括删除和修改,同时将我们需要传递的数据传递到链接中
{
"targets": [6], // 目标列位置,下标从0开始
"data": "name", // 数据列名
"render": function (data, type, full) { // 返回自定义内容
console.log(data);
return "预览 删除";
}
}
]
});