1. 概述
layui是一款基于jQuery的前端UI框架,它提供了丰富的UI组件和强大的功能接口,适用于各种网站后台管理系统的开发。其中,数据表格是layui中比较重要的组件之一,它可以用于数据的展示、筛选、排序、编辑、删除等操作,并且可以方便地与后端进行数据的交互和处理。本文将介绍layui数据表格的使用及其相关技巧,包括一些常见的操作和功能的实现方法。
2. 数据表格的基本使用
2.1 数据表格的引入
首先,需要在HTML文件中引入layui的相关文件。可以在layui的官方网站上下载最新版本的layui,并将其解压到项目目录下,然后在HTML文件中引入以下文件:
<link rel="stylesheet" href="layui/css/layui.css">
<script src="layui/layui.js"></script>
其中,layui.css是layui的样式文件,layui.js是layui的脚本文件。
2.2 数据表格的HTML结构
然后,在HTML文件中定义一个table元素,作为数据表格的容器。根据layui的要求,需要给table元素加上layui-table
和layui-table-box
类名,这样才能使数据表格组件正常渲染。具体代码如下:
<table class="layui-table layui-table-box">
<thead>
<tr>
<th>id</th>
<th>名称</th>
<th>价格</th>
</tr>
</thead>
<tbody>
<tr>
<td>001</td>
<td>华为手机</td>
<td>3999</td>
</tr>
<tr>
<td>002</td>
<td>小米手机</td>
<td>2999</td>
</tr>
<tr>
<td>003</td>
<td>苹果手机</td>
<td>5999</td>
</tr>
</tbody>
</table>
上述代码中,<thead>元素定义了表头部分,<tbody>元素定义了表格数据部分。其中,<th>元素表示表头单元格,<td>元素表示表格数据单元格。具体的表头和数据可以根据需求自行修改和添加。
2.3 数据表格的JS渲染
最后,在JS文件中调用layui的table.render()
方法来渲染数据表格。具体代码如下:
layui.use('table', function(){
var table = layui.table;
table.render({
elem: '#demo',
cols: [[
{field: 'id', title: 'ID'},
{field: 'name', title: '名称'},
{field: 'price', title: '价格'}
]],
data: [
{id: '001', name: '华为手机', price: '3999'},
{id: '002', name: '小米手机', price: '2999'},
{id: '003', name: '苹果手机', price: '5999'}
]
});
});
上述代码中,table.render()
方法接受一个JavaScript对象作为参数。其中,elem表示绑定表格的容器;cols表示表格的列;data表示表格要显示的数据。通过这三个参数,就可以完成数据表格的基本渲染。图示效果如下:
![数据表格的基本渲染效果](https://img-blog.csdnimg.cn/20210810171514770.png)
3. 数据表格的高级功能
3.1 数据表格的行选中和批量删除
在实际开发中,经常会有需要选中表格中某些行并进行删除的需求。为此,layui提供了行选中和批量删除的功能,可以方便地完成这类操作。
3.1.1 行选中的实现
行选中是指当用户点击表格中某一行时,该行的背景色发生变化,表示该行被选中。要实现行选中,可以借助layui的table.on('checkbox')
事件,该事件会在用户选中一行或取消选中一行时触发。具体代码如下:
layui.use('table', function(){
var table = layui.table;
table.render({
elem: '#demo',
cols: [[
{type: 'checkbox'},
{field: 'id', title: 'ID'},
{field: 'name', title: '名称'},
{field: 'price', title: '价格'}
]],
data: [
{id: '001', name: '华为手机', price: '3999'},
{id: '002', name: '小米手机', price: '2999'},
{id: '003', name: '苹果手机', price: '5999'}
],
done: function(res, curr, count) {
// 监听表格行复选框事件
table.on('checkbox', function(obj) {
console.log(obj.checked); // 当前行复选框是否选中
console.log(obj.data); // 当前行数据
console.log(obj.type); // 复选框类型,可选:row(行选中),all(全选中),none(全不选中)
});
}
});
});
在上述代码中,table.on('checkbox')
事件可以监听用户对表格行复选框的选中和取消选中操作,同时可以获取当前选中行的数据,并进行相关操作。
3.1.2 批量删除的实现
批量删除是指当用户选中表格中的某些行后,点击“删除”按钮,可以删除这些行数据并更新表格。要实现批量删除,可以借助layui的table.checkStatus()
方法和table.reload()
方法。其中,table.checkStatus()
方法可以获取当前选中行的数据,table.reload()
方法可以重新加载表格数据,并使其在页面上更新。具体代码如下:
layui.use('table', function(){
var table = layui.table;
// 渲染数据表格
table.render({
elem: '#demo',
cols: [[
{type: 'checkbox'},
{field: 'id', title: 'ID'},
{field: 'name', title: '名称'},
{field: 'price', title: '价格'}
]],
data: [
{id: '001', name: '华为手机', price: '3999'},
{id: '002', name: '小米手机', price: '2999'},
{id: '003', name: '苹果手机', price: '5999'}
],
done: function(res, curr, count) {
// 监听表格行复选框事件
table.on('checkbox', function(obj) {
console.log(obj.checked); // 当前行复选框是否选中
console.log(obj.data); // 当前行数据
console.log(obj.type); // 复选框类型,可选:row(行选中),all(全选中),none(全不选中)
});
}
});
// 监听删除按钮点击事件
$('#deleteBtn').on('click', function() {
// 获取选中的行数据
var checkedData = table.checkStatus('demo').data;
console.log(checkedData);
// 执行后台删除操作
// ...
// 重新加载表格数据
table.reload('demo', {
url: '/getData',
where: {}, // 查询条件
page: {
curr: 1 // 重新从第一页开始显示
}
});
});
});
在上述代码中,table.checkStatus()
方法会返回一个包含选中行数据的数组,然后可以根据需要进行相关操作,比如向后台发送请求进行删除等操作。最后,通过table.reload()
方法重新加载表格数据即可。
3.2 数据表格的分页功能
当表格中数据很多或者需要进行翻页操作时,可以使用layui的分页功能来实现。分页功能可以将数据分为若干页,每页固定显示一定数量的数据,用户可以通过“上一页”、“下一页”等操作来浏览页码和数据。
3.2.1 分页的实现
要使用分页功能,需要在数据表格中添加页码元素,同时在JS文件中调用layui的table.render()
方法来启用分页功能。具体的代码如下:
<div id="page"></div>
<table id="demo" class="layui-table layui-table-box" lay-filter="demo"></table>
layui.use(['table', 'laypage'], function(){
var table = layui.table,
laypage = layui.laypage;
// 渲染数据表格,并启用分页功能
table.render({
elem: '#demo',
cols: [[
{field: 'id', title: 'ID'},
{field: 'name', title: '名称'},
{field: 'price', title: '价格'}
]],
url: '/getData',
page: true, // 启用分页功能
limit: 10, // 每页显示的数据条数
done: function(res, curr, count) {
// 渲染分页器
laypage.render({
elem: 'page',
count: count, // 总记录数
curr: curr, // 当前页码
limit: 10, // 每页显示的数据条数
jump: function(obj, first) {
if (!first) {
// 重新加载表格数据
table.reload('demo', {
where: {
page: obj.curr,
limit: obj.limit
}
});
}
}
});
}
});
});
在上述代码中,table.render()
方法的page: true
表示启用分页功能,limit: 10
表示每页显示的数据条数。此外,table.render()
方法还可以通过url
参数从后台获取数据,并可以通过done
回调函数渲染分页器。具体的分页器渲染显示效果如下图所示:
![数据表格的分页器效果](https://img-blog.csdnimg.cn/2021081017282131.png)
3.2.2 分页的数据处理
当启用分页功能时,需要在后台根据分页参数(如:page
和limit
)来查询数据并返回相应的结果。在实际开发中,可以使用PHP、Java等后端语言来实现分页数据处理,并将结果返回给前端进行显示。
4. 总结
本文介绍了layui数据表格的基本使用和高级功能,包括行选中、批量删除、分页等多个方面。在实际开发中,可以根据需求选择使用这些功能,从而提高数据操作和管理的效率。