上一篇
本文目录导读:
📚 Layui表格排序全攻略 | 事件监听与数据处理技巧
(信息更新至2025-08,结合官方文档与实战案例)
前端排序
在列配置中启用sort: true
,Layui会自动处理升序/降序:
table.render({ cols: [[ {field: 'id', title: 'ID', sort: true}, {field: 'username', title: '用户名', sort: true} ]] });
后端排序
通过where
参数传递排序字段和类型,结合reload
触发AJAX请求:
table.on('sort(test)', function(obj){ tableIns.reload({ where: { field: obj.field, order: obj.type }, url: '/api/sorted-data' // 指向后端排序接口 }); });
layui.use('table', function(){ var table = layui.table; // 基础表格渲染 var tableIns = table.render({ elem: '#demo', url: '/data', cols: [[ {field: 'id', title: 'ID', sort: true}, {field: 'price', title: '价格', sort: true} ]], page: true }); // 监听排序事件 table.on('sort(demo)', function(obj){ console.log('排序字段:', obj.field); // 如:price console.log('排序类型:', obj.type); // asc/desc // 示例:触发价格区间统计 calculatePriceRange(obj.field, obj.type); }); });
动态统计(前端示例)
function calculatePriceRange(field, type) { var allData = tableIns.config.data; // 获取全量数据 var sortedData = _.sortBy(allData, [field]); // 使用Lodash排序 if (type === 'desc') sortedData.reverse(); // 更新统计信息 $('#min-price').text(sortedData[0][field]); $('#max-price').text(sortedData[sortedData.length-1][field]); }
结合重载刷新(后端示例)
table.on('sort(demo)', function(obj){ tableIns.reload({ where: { sortField: obj.field, sortOrder: obj.type }, done: function(res){ layer.msg('已按'+obj.field+' '+obj.type+'排序'); updateChart(res.data); // 同步更新图表 } }); });
排序后操作列失效
reload
的done
回调中重建操作列:done: function(res){ layui.use('table', function(){ layui.table.init('demo', { /* 重新初始化操作列 */ }); }); }
分页与排序联动
在reload
时保留当前页码:
tableIns.reload({ where: { ... }, page: { curr: obj.curr } // 保持当前页 });
性能优化
用户体验增强
// 添加排序状态指示 table.on('sort(demo)', function(obj){ $(this).find('th').removeClass('sorted-asc sorted-desc'); $(this).find('th[data-field="'+obj.field+'"]') .addClass('sorted-'+obj.type); });
💬 互动提问:你在实现排序监听时遇到过哪些奇葩问题?欢迎分享经验!
本文由 业务大全 于2025-08-26发表在【云服务器提供商】,文中图片由(业务大全)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vds.7tqx.com/wenda/733122.html
发表评论