VUE3+Element-Plus 实现分页组件跨页选择数据

<template>
            <div class="table">
                <el-table ref="table" :data="tableData" @selection-change="handleSelectionChange" :row-key="getRowKeys">
                    <el-table-column type="selection" width="" reserve-selection />
                    <el-table-column type="index" label="序号" width="60" />
                    <el-table-column prop="name" label="姓名" width="" />
                    <el-table-column prop="age" label="年龄" width="" />
                    <el-table-column prop="address" label="住址" width="" />
                    <el-table-column fixed="right" label="操作" width="120">
                        <template #default="scope">
                            <el-button link type="primary" size="small">操作按钮</el-button>
                        </template>
                    </el-table-column>

                </el-table>
                <!-- 分页组件 -->
                <div style="display: flex;justify-content: space-between;padding: 16px;">
                    <div style="font-size: 14px;padding-top: 8px;">{{ `共${itemPage.total}条` }}</div>
                    <div>
                        <el-pagination class="itemPage" v-model:current-page="itemPage.currentPage"
                            v-model:page-size="itemPage.pageSize" :page-sizes="[10, 20, 50, 100]" :small="itemPage.small"
                            :disabled="itemPage.disabled" :background="itemPage.background"
                            layout=" sizes, prev, pager, next, jumper" :total="itemPage.total"
                            @size-change="handleItemSizeChange" @current-change="handleItemCurrentChange" />
                    </div>
                </div>
            </div>
</template>
const tableData = ref<Data[]>([]);
//通过Ref获取表格的Dom节点
const table = ref();

interface Data {
    name: string,
    age: number,
    address: string,
}

//页面分页配置
const itemPage = ref({
    currentPage: 1,
    pageSize: 10,
    small: false,
    background: false,
    disabled: false,
    total: 0,
})

//选中表格行事件
const handleSelectionChange = (val: Data[]) => {

    console.log(val);

}

//清除所有已选中的表格行
function selectClear() {

    table.value.clearSelection();

}

//获取key标识
const getRowKeys = (row) => {

    // 注:row.XX XX是传递后台的唯一字段值
    return row.name

}

//触发分页回调
function handleItemCurrentChange(val) {

    itemPage.value.currentPage = val;
    //刷新方法
    // XXX();

}
function handleItemSizeChange(val) {

    itemPage.value.pageSize = val;
    //刷新方法
    // XXX();

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
前端代码(使用Vue3和Element Plus): ``` <template> <div> <el-table :data="tableData" stripe> <el-table-column prop="id" label="ID"></el-table-column> <el-table-column prop="name" label="Name"></el-table-column> <el-table-column prop="age" label="Age"></el-table-column> </el-table> <el-pagination @current-change="handleCurrentChange" :current-page="currentPage" :page-size="pageSize" layout="total, prev, pager, next" :total="total"> </el-pagination> </div> </template> <script> import { ref } from 'vue'; import { getTableData } from '@/api/example'; export default { setup() { const currentPage = ref(1); const pageSize = ref(10); const total = ref(0); const tableData = ref([]); async function getData() { const params = { currentPage: currentPage.value, pageSize: pageSize.value, }; const res = await getTableData(params); if (res.code === 200) { tableData.value = res.data.list; total.value = res.data.total; } } function handleCurrentChange(page) { currentPage.value = page; getData(); } getData(); return { currentPage, pageSize, total, tableData, handleCurrentChange, }; }, }; </script> ``` 后端代码(使用Spring Boot 2): ``` @GetMapping("/tableData") public CommonResult<PageResult<TableData>> getTableData(@RequestParam(required = false, defaultValue = "1") Integer currentPage, @RequestParam(required = false, defaultValue = "10") Integer pageSize) { PageResult<TableData> pageResult = tableDataService.getTableData(currentPage, pageSize); return CommonResult.success(pageResult); } ``` 其中,`TableData`为实体类,`PageResult`为分页结果类。`tableDataService`为对应的Service类,用于查询数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值