layui表格Data模式下(全部数据排序)非当前分页排序
引入声明layui-table
layui.use('table', function(){
var table = layui.table;
// 初始化的默认渲染
displayTable(table,'ol_keyword',cols,data);
// 设置表排序的监听
table.on('sort(ol_keyword)', function(obj){
// console.log(this)
// console.log(obj);
var type = obj.type == 'asc'?true:false;
data = arraySort(data,obj.field,type);// 处理排序
displayTable(table,'ol_keyword',cols,data);// 处理渲染
return false;
});
});
渲染表格函数
/**
* layui表格渲染
* _tableObj (layui.table的声明对象)
* _id div容器id
* _cols 表头配置(Object)
* _data 表数据(object)
*/
function displayTable(_tableObj,_id,_cols,_data){
//直接赋值数据
_tableObj.render({
elem: '#'+_id
,autoSort: false
//,width: 900
//,height: 274
,cols: _cols
,data: _data
,skin: 'row' //表格风格
,even: true
//,size: 'lg' //尺寸
,page: true //是否显示分页
,limits: [10,20,50,100]
,limit: cur_limit //每页默认显示的数量
//,loading: false //请求数据时,是否显示loading
});
}
排序函数(空数据不参与排序默认最后)
/**
* 数据排序
* _data 要排序的数据
* _field 要排序的字段
* _type 排序方式true正序,false倒序
*/
function arraySort(_data,_field,_type){
if(typeof(_data) == 'object'){
if(_type){
_data.sort(function(x, y){
if(x[_field] == '' || y[_field] == ''){
// 空值数据为最小排序,放在最后
if(x[_field] < y[_field]){
return 1;
}else
if(x[_field] > y[_field]){
return -1;
}else
if(x[_field] == y[_field]){
return 0;
}
}else{
if(x[_field] > y[_field]){
return 1;
}else
if(x[_field] < y[_field]){
return -1;
}else
if(x[_field] == y[_field]){
return 0;
}
}
});
}else{
_data.sort(function(x, y){
if(x[_field] < y[_field]){
return 1;
}else
if(x[_field] > y[_field]){
return -1;
}else
if(x[_field] == y[_field]){
return 0;
}
});
}
}
return _data;
}