layui中创建table的方法

在Layui框架中,table是一个常见的组件,用于展示数据。创建一个表格,不仅仅是一个简单的HTML元素拼接,还要考虑到一些功能,例如数据的筛选、排序、分页等功能。在这篇文章中,我们将详细介绍Layui中创建table的方法。

##

准备工作

在使用Layui的table组件之前,需要先引入Layui的相关文件。这里我们可以通过CDN引入,也可以下载后引入本地。

<!-- 引入Layui的相关文件 -->

<link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/layui/2.6.8/css/layui.min.css" integrity="sha384-fm10u2M4eP0lCgf7tYKFjfQNvXd6lTQgIUPy5zGtqYgsuL3oINgEQIoR5kl+h+1n" crossorigin="anonymous">

<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js" integrity="sha384-VkG8QiMVBnhpEJv6Ix3bltfSoMwYA+xT7j/+AevvyiSzNF9cV1C2RiKT7XAZ8ehl" crossorigin="anonymous"></script>

<script src="https://cdn.bootcdn.net/ajax/libs/layui/2.6.8/layui.min.js" integrity="sha384-aGv5eAwVIJX99GWJtKr8PQRr7OZjGq0JyiupNuGQ6uNvaoyW2J39U5lJ5Yxg7x+a" crossorigin="anonymous"></script>

其中,layui.min.css是Layui的样式文件,jquery.min.js是jQuery库文件,layui.min.js是Layui的js文件。

##

创建简单的表格

在引入Layui的相关文件之后,我们可以开始创建我们的表格了。Layui的table组件默认是基于jQuery库的,所以在使用前需要先引入jQuery库。

创建一个简单的表格很简单,只需要使用一个table标签,并添加一个lay-data属性就可以了。其中,lay-data属性里面的内容是一个JSON对象,用于定义表格的一些属性,例如表格的列、表格的数据等等。

<!-- 创建一个简单的表格 -->

<table lay-data="{columns: [[ // 表头信息

{field: 'id', title: 'ID'},

{field: 'username', title: '用户名'},

{field: 'email', title: '邮箱'}

]], data: [{id: 1, username: '张三', email: 'zhangsan@163.com'}]}" lay-filter="test"></table>

这段代码创建了一个有三列的表格,分别是ID、用户名、邮箱。同时,还有一条数据,这条数据的ID是1,用户名是张三,邮箱是zhangsan@163.com。其中,lay-filter属性用于定义表格的过滤器名称。

运行代码,我们可以看到一个简单的表格。

![简单的表格](https://img-blog.csdnimg.cn/img_convert/5949d5f7f43ebdb8990891e5280a0f25.png)

##

自定义表格的列

Layui的table组件提供了十分灵活的列定制方式。我们可以使用自定义列,对表格进行进一步的美化和定制。

显示图标

让我们从一个最简单的自定义列开始。我们来为表格的第一列添加一个图标。

这里我们通过设置模板来实现。模板可以使用{ }符号表示,符号中的内容将会在表格数据中被替换为真实的值。

<!-- 使用模板来显示图标 -->

<table lay-data="{ // 表格数据

columns: [[ // 表头信息

{field: 'id', title: 'ID', templet: ' {{d.id}}'},

{field: 'username', title: '用户名'},

{field: 'email', title: '邮箱'}

]],

data: [ // 表格实际数据

{id: 1, username: '张三', email: 'zhangsan@163.com'},

{id: 2, username: '李四', email: 'lisi@qq.com'}

]

}" lay-filter="test"></table>

在这个例子中,我们将第一列的templet属性设为 {{d.id}}。这个属性是用来定义单元格的模板的。其中,{{d.id}}表示的是表格数据中该行的id值。i标签中的layui-icon layui-icon-username是Layui自带的一个小图标,我们可以通过更改这个class值来更换不同的图标。

运行代码,我们可以看到表格中的第一列多了一个小图标。

数据格式化

我们可以通过自定义模板,来修改表格中单元格的样式和显示。但是通过这种方式,我们还可以修改数据的格式。例如,把日期格式化为自己想要的格式。

<!-- 格式化日期数据 -->

<table lay-data="{ // 表格数据

columns: [[ // 表头信息

{field: 'id', title: 'ID'},

{field: 'username', title: '用户名'},

{field: 'birthdate', title: '出生日期', templet: '

{{layui.util.toDateString(d.birthdate, "yyyy-MM-dd")}}
'}

]],

data: [ // 表格实际数据

{id: 1, username: '张三', birthdate: 963859200000},

{id: 2, username: '李四', birthdate: 574021600000}

]

}" lay-filter="test"></table>

上面这个例子中,我们把生日数据从时间戳格式转换为了yyyy-MM-dd格式。我们使用自定义模板来控制单元格的显示格式,通过调用Layui框架的util.toDateString函数来更改时间格式。

运行代码,我们可以看到表格中的生日栏数据已经被格式化为yyyy-MM-dd格式。

使用URL加载数据

在创建表格时,我们通常会从一个URL上,根据一定的规则获取到数据,然后呈现到表格中。

Layui的table组件提供了十分便捷的URL方式来加载数据。只需要设置url属性和method属性即可。其中,url属性用于定义获取数据的URL,method属性用于定义获取数据的方式。

<!-- 通过URL加载数据 -->

<table lay-filter="test" lay-data="{ // 表格数据

url:'/user',

method: 'post',

cols: [[ // 表头信息

{field: 'id', title: 'ID'},

{field: 'name', title: '用户名'},

{field: 'email', title: '邮箱'}

]]

}"></table>

在这个例子中,我们通过设置url为/user来请求数据。请求方式为post。同时在cols中定义了表头信息。

##

表格的事件处理

Layui的table组件提供了多种事件,可以在表格发生某些事件时执行相应的操作。例如,在表格中双击某行时,弹出该行数据的详情。

<!-- 在表格双击某行时弹出该行数据的详情 -->

<table lay-filter="test" lay-data="{ // 表格数据

url:'/user',

method: 'post',

cols: [[ // 表头信息

{field: 'id', title: 'ID'},

{field: 'name', title: '用户名'},

{field: 'email', title: '邮箱'}

]],

done: function(res){ // 表格数据渲染完成后执行的回调函数

// 表格渲染完成后绑定双击事件

var table = layui.table;

table.on('rowDouble(test)', function(obj){

// obj即为当前行数据

var detail = 'ID:'+obj.data.id+''+

'用户名:'+obj.data.name+''+

'邮箱:'+obj.data.email;

layer.alert(detail, {title: '详情'});

});

}

}"></table>

在这个例子中,我们通过lay-data设置了done属性。在渲染完成后执行的回调函数中,我们使用layer.alert弹出当前行的详情。

这个例子还用到了一个新的函数:table.on。这个函数是Layui的事件监听函数。在这个例子中,我们监听了rowDouble事件,当某一行被双击时,就会触发该事件,执行回调函数。

到这里,我们就对Layui中创建table的方法进行了详细的介绍。我们可以看到,Layui的table组件十分灵活,可以根据我们的需求进行定制。希望这篇文章对大家有所帮助。