vxe-table 如何使用分页,自定义分页
表格和分页是两个不同的组件,可以搭配在一起使用,具体如下:
<vxe-table
show-overflow
height="200"
row-id="id"
:loading="loading"
:data="tableData">
<vxe-column type="checkbox" width="60"></vxe-column>
<vxe-column type="seq" title="序号" width="60"></vxe-column>
<vxe-column field="name" title="Name" sortable></vxe-column>
<vxe-column field="sex" title="Sex"></vxe-column>
<vxe-column field="age" title="Age"></vxe-column>
</vxe-table>
<vxe-pager
:loading="loading"
:current-page="tablePage.currentPage"
:page-size="tablePage.pageSize"
:total="tablePage.total"
:layouts="['PrevPage', 'JumpNumber', 'NextPage', 'FullJump', 'Sizes', 'Total']"
@page-change="handlePageChange">
</vxe-pager>
export default {
data () {
return {
loading: false,
tableData: [],
tablePage: {
currentPage: 1,
pageSize: 10,
total: 0
}
}
},
created () {
this.findList()
},
methods: {
findList () {
// 模拟后台接口
this.loading = true
setTimeout(() => {
const list = [
{name: 'test_124',sex: '男', age: 32},
{name: 'test_190',sex: '女', age: 22},
{name: 'name_66',sex: '男', age: 26},
{name: 'name_77',sex: '男', age: 28},
{name: 'name_17',sex: '女', age: 23}
]
this.tableData = list
this.tablePage.total = 401
this.loading = false
}, 200)
},
handlePageChange ({ currentPage, pageSize }) {
this.tablePage.currentPage = currentPage
this.tablePage.pageSize = pageSize
this.findList()
}
}
}
在 grid 中如何使用分页,grid是一套更加强大集成组件,使用分页只需要简单配置即可:
<vxe-grid
border
resizable
height="530"
:loading="loading"
:pager-config="tablePage"
:columns="tableColumn"
:data="tableData"
@page-change="handlePageChange"></vxe-grid>
export default {
data () {
return {
loading: false,
tablePage: {
total: 0,
currentPage: 1,
pageSize: 10,
pageSizes: [10, 20, 50, 100, 200, 500],
layouts: ['Sizes', 'PrevJump', 'PrevPage', 'Number', 'NextPage', 'NextJump', 'FullJump', 'Total'],
perfect: true
},
tableColumn: [
{ type: 'seq', width: 60 },
{ type: 'checkbox', width: 50 },
{ field: 'name', title: 'Name' },
{ field: 'nickname', title: 'Nickname' },
{ field: 'role', title: 'Role' },
{ field: 'describe', title: 'Describe', showOverflow: true }
],
tableData: []
}
},
created () {
this.findList()
},
methods: {
findList () {
// 模拟后台接口
this.loading = true
setTimeout(() => {
const list = [
{name: 'test_124',sex: '男', age: 32},
{name: 'test_190',sex: '女', age: 22},
{name: 'name_66',sex: '男', age: 26},
{name: 'name_77',sex: '男', age: 28},
{name: 'name_17',sex: '女', age: 23}
]
this.tableData= list
this.tablePage.total = 401
this.loading= false
}, 200)
},
searchEvent () {
this.tablePage.currentPage = 1
this.findList()
},
handlePageChange ({ currentPage, pageSize }) {
this.tablePage.currentPage = currentPage
this.tablePage.pageSize = pageSize
this.findList()
}
}
}
更多高级用法可以去看官方文档