这种格式的树形数据怎么进行分页
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Hzb.aspx.cs" Inherits="QinStyle.AppWeb.ProjectModule.Hzb.Hzb" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<link href="/Static/JS/elementui/index.css" rel="stylesheet" />
<link href="css/style.css" rel="stylesheet" />
<script src="../Sjym/js/vue.min.js"></script>
<script src="/Static/JS/elementui/index.js"></script>
<script src="../Sjym/js/jquery-1.11.3.min.js"></script>
<script src="../../Static/JS/moment.min.js"></script>
<%--<script src="../Sjym/js/vant.min.js"></script>--%>
</head>
<body>
<div id="app">
<div class="titleDiv">
<div id="userformTitle">申能企业<span>{{year}}</span>年度技术改造/科技项目计划汇总表</div>
</div>
<div style="width:100%;height:60px;float:left;">
<el-date-picker
v-model="value3"
type="year"
placeholder="选择年">
</el-date-picker>
<el-button type="primary" icon="el-icon-search" @click="button()"><span style="color:#ffffff">查询</span></el-button></div>
<template>
<div>
<el-table
:data="tableData"
style="width: 100%; margin-bottom: 20px;"
row-key="id"
default-expand-all
border
:tree-props="{children: 'children', hasChildren: 'hasChildren'}">
<el-table-column
prop="Xh"
label="序号"
width="92">
</el-table-column>
<el-table-column
prop="Xmmc"
label="项目名称"
width="160">
</el-table-column>
<el-table-column
prop="Lxyj"
label="立项依据"
width="160">
</el-table-column>
<el-table-column
prop="Zynr"
label="主要内容"
width="160">
</el-table-column>
<el-table-column
prop="Jhqzny"
label="计划起止年月"
width="160">
</el-table-column>
<el-table-column
prop="Jhzfy"
label="计划总费用(万元)"
width="160">
</el-table-column>
<el-table-column
prop="Dnhtqdfy"
label="当年合同签订费用(万元)"
width="160">
</el-table-column>
<el-table-column
prop="Xmfzr"
label="项目负责人"
width="160">
</el-table-column>
<el-table-column
prop="Xmsx"
label="项目属性"
width="160">
</el-table-column>
<el-table-column
prop="Xmjb"
label="项目级别"
width="160">
</el-table-column>
<el-table-column
prop="Bz"
label="备注"
width="160">
</el-table-column>
</el-table>
<div class="tabListPage">
<el-pagination @size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="pageSizes"
:page-size="PageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalCount">
</el-pagination>
</div>
</div>
</template>
</body>
<script>
var app = new Vue({
el: "#app",
mounted: function () {
},
data() {
return {
value3: '',
tableData: [],
year: '',
currentPage: 1,
totalCount: '',
pageSizes: [1, 40, 60, 80,100,500],
PageSize: 1,
}
},
methods: {
handleSizeChange: function (val) {
this.PageSize = val;
},
handleCurrentChange: function (currentPage) {
this.currentPage = currentPage;
},
})
</script>
</html>
回答:表格分页是对数据进行管理,你可以重写这个 handleSizeChange 和 handleCurrentChange 方法,然后通过Ajax从后端接口获取数据,然后赋值给表格里面的 tableData 属性,这样就可以了;
这里有一个差不多类型的给你做参考
<template>
<!-- 文章类型管理 -->
<el-card shadow="always" class="container-card">
<div style="margin-bottom: 20px;">
<el-button type="primary" @click="addTypeForm">新增</el-button>
<el-input v-model="searchInput" placeholder="请输入文章类型名查询"
@input="search()" clearable style="width: 400px; displsy: flex; margin-left: 50px;">
</el-input>
<el-dialog title="添加文章类型" v-model="articleTypeForm.dialogFormVisible" width="40%">
<el-form :model="articleTypeForm" label-width="140px">
<el-form-item label="文章类型名称">
<el-input v-model="articleTypeForm.type" class="userForm"></el-input>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="articleTypeForm.dialogFormVisible = false">取 消</el-button>
<el-button type="primary" @click="enSure">确 定</el-button>
</span>
</template>
</el-dialog>
</div>
<el-table id="table"
:header-cell-style="{'text-align':'center'}" :cell-style="{'text-align':'center'}"
:data="data.tableData" border stripe >
<el-table-column prop="id" label="ID" sortable></el-table-column>
<el-table-column prop="type" label="文章类型"> </el-table-column>
<el-table-column label="操作" width="150">
<template #default="scope">
<el-popconfirm title="确定删除吗?" @confirm="handleDelete(scope.row)">
<template #reference>
<el-button size="small" type="danger">删除</el-button>
</template>
</el-popconfirm>
</template>
</el-table-column>
</el-table>
<div style="margin: 10px 0;">
<el-pagination
v-model:currentPage="currentPage"
v-model:page-size="pageSize"
:page-sizes="[5, 10, 15, 20]"
:disabled="disabled"
background
layout="total, sizes, prev, pager, next, jumper"
:total="totalPage"
@size-change="handleSizeChange"
@current-change="handleCurrentChange" />
</div>
</el-card>
</template>
<script>
import { onBeforeMount, reactive, ref } from 'vue';
import { postRequest, deleteRequest, message } from '../utils/api'
export default {
name: "ArticleTypeManage",
setup() {
function handleSizeChange(size) {
pageSize.value = size;
getPage();
}
function handleCurrentChange(cur) {
currentPage.value = cur;
getPage();
}
let searchInput = ref('')
function search() {
getPage()
}
let currentPage = ref(1)
let pageSize = ref(10)
let totalPage = ref(100)
const disabled = ref(false)
const data = reactive({
tableData: []
})
function getPage() {
postRequest('/articleType/getPage', {
pageNum: currentPage.value,
pageSize: pageSize.value,
searchInput: searchInput.value,
}).then(response=>{
data.tableData = response.data.data.articleTypeList
totalPage.value = response.data.data.total
});
}
function handleDelete(row){
deleteRequest('/articleType/delete', {
type: row.type
}).then(response=>{
if(response.data.code == 200){
getPage()
message(response.data.msg, 'success')
} else {
message(response.data.msg, 'error')
}
})
}
let articleTypeForm = reactive({
type: '',
dialogFormVisible: false
})
function addTypeForm() {
articleTypeForm.dialogFormVisible = true;
}
function enSure(){
postRequest('/articleType/add', articleTypeForm).then(response=>{
if(response.data.code == 200){
getPage()
message(response.data.msg, 'success')
} else {
message(response.data.msg, 'error')
}
})
articleTypeForm.dialogFormVisible = false
}
onBeforeMount(() => {
getPage()
})
return {
handleSizeChange,
handleCurrentChange,
searchInput,
search,
currentPage,
pageSize,
totalPage,
data,
handleDelete,
articleTypeForm,
addTypeForm,
enSure,
disabled
}
}
};
</script>
<style scoped>
/* 文章类型管理内容容器 */
.container-card {
width: calc(100% - 24px);
margin: 10px 10px;
}
.userForm {
width: 80%;
}
</style>