Vue2.x+Asp.net Core + EF core 分页查询

项目准备工作

创建Vue

首先创建vue项目,如果不知道可以看我的另一篇文章Vue.js–基于webpack项目的使用

安装 Element UI

npm i element-ui -S

创建Asp.net Core

Asp.net core使用EF Core连接Mysql数据库

开始

前端Vue页面

在表格的后面添加如下代码,可以用div包围然后调整样式.

<el-pagination @size-change="pageSizeChange" @current-change="pageCurrentChange" :current-page.sync="pageConfig.page"
                           :page-sizes="pageConfig.pageRange" :page-size="pageConfig.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="pageConfig.totalCount">
</el-pagination>

JS

data中添加

pageConfig: {
	page: 1,
    pageSize: 20,
    totalCount: 0,
    pageRange: [10, 20, 50, 100, 200, 300]
}

methods中添加:

// 更换页码
pageCurrentChange(val) {
	this.pageConfig.page = val
	this.getDataListPage()
}, 
//更换每页显示数量
pageSizeChange(val) {
	this.pageConfig.pageSize = val
    this.getDataListPage()
},// 获取数据
getDataListPage() {
	this.$post('/api/Accendance/getDataListPage', {
    	pageSize: this.pageConfig.pageSize,
        page: this.pageConfig.page,
        ......
     }).then(res => {
     	if (res.success) {
        	that.pageConfig.totalCount = res.totalCount
        }
              
       }).catch(err => {
       ......
       })
}

Asp.net Core

我在这里创建了一个统一的返回类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace ManageSystemApi.Models
{
    [Serializable]
    public class Result<T>
    {
      
        public int? code { get; set; }

        public Boolean? success { get; set; }
        public string msg { get; set; }

        public List<T> dataList { get; set; }

        public int totalCount { get; set; }

        public int page { get; set; }

        public int pageSize { get; set; }

        public T data { get; set; }

        public Result()
        {
        }

        public Result(int? code, bool? success, string msg, List<T> dataList, int totalCount,  int page, int pageSize)
        {
            this.code = code;
            this.success = success;
            this.msg = msg;
            this.dataList = dataList;
            this.totalCount = totalCount;
            this.page = page;
            this.pageSize = pageSize;   
        }
        public Result(int? code, bool? success, string msg,  int totalCount, int page, int pageSize,T data)
        {
            this.code = code;
            this.success = success;
            this.msg = msg;
            this.data = data;
            this.totalCount = totalCount;
            this.page = page;
            this.pageSize = pageSize;
        }
        public static Result<T> suc(T data)
        {            
            return new Result<T>(0, true, "成功", 0, 0, 0, data);
        }
        public static Result<T> suc()
        {            
            return new Result<T>(0, true, "成功", null, 0, 0, 0);
        }
        public static Result<T> suc(List<T> dataList)
        {
            return new Result<T>(0,true,"成功",dataList,0,0,0);
        }       

        public static Result<T> fail(string msg)
        {
            return new Result<T>(1, false, msg, new List<T>(), 0,  0, 0);
        }

    }
}

Controller中接收参数时,可以使用如下方法,其中result包含了分页的数据

[HttpPost("api/[controller]/getDataListPage")]
public Result<Accendance> getDataListPage(Result<Accendance> result, ...)
{
    	.......
}

连接数据库的dao中:

 IEnumerable<Accendance> p = null;
 // Skip代表页码,Take代表每页显示的数量
 result.dataList = p.Skip((result.page - 1) * result.pageSize).Take(result.pageSize).ToList();
 return result;
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值