请用uni-table实现根据接口获取到的dataList渲染表格,并且实现点击按钮展开表格,表格合计等功能
时间: 2024-10-11 19:05:31 浏览: 45
在UniApp中,你可以使用`uni-table`组件结合网络请求来渲染表格,并配合事件处理机制实现实时展开和合计功能。以下是一个简单的示例,假设我们有一个`getData`接口从服务器获取数据列表`dataList`:
```html
<template>
<view>
<button @click="loadData">加载数据</button>
<uni-table ref="table" :columns="columns" :data="data" :loading="isLoading" row-expand @expand-change="onExpandChange"></uni-table>
<view>合计: {{ total }}</view>
</view>
</template>
<script>
export default {
data() {
return {
dataList: [],
columns: [], // 初始化列配置
isLoading: false,
expandRowIndex: null, // 展开行索引
total: 0, // 合计值
};
},
methods: {
async loadData() {
this.isLoading = true;
try {
const response = await this.$http.get('getData');
this.dataList = response.data; // 更新数据
this.columns = ...; // 根据接口数据动态生成列配置
this.total = this.calculateTotal(); // 初始化合计
} catch (error) {
console.error('加载数据失败:', error);
} finally {
this.isLoading = false;
}
},
onExpandChange(index) {
if (index !== this.expandRowIndex) {
this.expandRowIndex = index; // 收起当前已展开行
} else {
this.expandRowIndex = null; // 展开新的行
}
},
calculateTotal() {
// 你需要在这里编写计算合计的方法,比如求和等
let total = 0;
for (const item of this.dataList) {
total += item.sumField; // 假设sumField是需要求和的字段
}
return total;
},
},
};
</script>
```
在这个例子中,当你点击“加载数据”按钮时,会发起API请求获取数据并更新表格。`row-expand`事件监听器会在每行点击时改变`expandRowIndex`,以便于控制哪一行正在展开。`calculateTotal`函数用于计算表中特定字段的总和。
阅读全文