微信小程序并没有表格组件,可能是官方考虑到,在前端开发中,表格的嵌套性太多,用DIV代码会比较简洁就没有实现吧。没有现成的组件可以使用,针对这个问题,目前有两种解决方案:
1)内嵌 h5页面,(毕竟 h5 的 table组件
众多,但是各个参数都需要配置,比较麻烦)
2)自定义 table组件
(其实更方便)
使用wx:for列表渲染功能结合flex布局,即可实现表格的制作
一、表格的制作
table.wxml:
<!--pages/table/table.wxml--><view class="table"><view class="tr bg-w"><view class="th">姓名</view><view class="th">报到方式</view><view class="th ">到校日期</view></view><block wx:for="{{listData}}" wx:key="{[code]}"><view class="tr" wx:if="{{index % 2 == 0}}"><view class="td">{{item.name}}</view><view class="td">{{item.style}}</view><view class="td">{{item.datetime}}</view></view><view class="tr" wx:else><view class="td">{{item.name}}</view><view class="td">{{item.style}}</view><view class="td">{{item.datetime}}</view></view></block></view>
在列表循环中把每个数据在每行依次排列即得到表格的排列模式,这里的index%2==0意为相邻两行的样式不一样,这里都用tr类使两行样式一样,实际可以更改为不同样式。
tr类中用flex布局展示这一行的所有数据,即构成表格,表头用bg-w类做一个区分即可
table.wxss:
/* pages/table/table.wxss */.table { border: 0px solid darkgray; font-size: 12px; } .tr { display: flex; width: 100%; justify-content: center; height: 2rem; align-items: center; } .td { width:40%; justify-content: center; text-align: center;}.bg-w{ background: snow; } .th { width: 40%; justify-content: center; background: #3366FF; color: #fff; display: flex; height: 2rem; align-items: center;}
二、展示云数据库中的数据
要想实现从云数据库读取数据到界面展示,需要把数据读到界面内存中,在js中定义内存数组为
data: {
listData: []
},
因此只需读数据到此数组即可,参考云数据库的操作接口,在tab切换时需要读数据库,因此用onshow函数来读入数据,代码如下:
onShow() { wx.cloud.database().collection('students').get({ success: res=>{ console.log('请求成功',res)//res.data包含该记录的数据 this.setData({ listData: res.data }) }, fail(err){ console.log('请求失败',err) } }) },
以上即为数据库与表格展示的绑定,非常方便简洁。
实现效果: