一个简单的分页功能的实现(.net开发 数据库使用EF 语句linq)

做了一个简单的分页功能,入门15天小白,大佬勿喷。分页主要是根据当前页面去数据库里取当前页面要展示的几条内容,当然,你也可以全部取出来,那就只是一个“假分页”,要多少取多少是分页的精髓所在,这极大的减轻了数据库的压力,并且前端更加美观易于操作。
首先,实现类分页功能需要的参数就是一页显示多少行,处于哪一页,当然,这个一页显示多少行可以后台定义,也可以由前台传值过来,返回的结果是一共是多少页,还有当前页的内容,然后去前台绑定。由于我的是在系统里,所以我还有个参数userid,先上代码:
这里只提供一下实现类代码,也就是个方法,给大家提供个思路,前端的话大家可以自由发挥。大家要的话我也可以贴出来。

//实现类实现分页功能,pageindex是当前处于第几页,从前台传过来的
        public QueryPageModel<PaperInfo> ShowPaperList(long UserId,int pageindex)
        {
            PaperInfo showresult = new PaperInfo();
            //底下这个a就是一页多少行 也就是row
           int a = 5;
           //计算一下总行数x
            int x =(from paperinfo in Context.PaperInfo where paperinfo.UserId == UserId select paperinfo ).Count();
            //最后返回的r或者r+1的意思是总页数
            int r =x/a;
            //r+1== pageindex这说明现在正处于最后一页,并且最后一页不是“满的”(也就是说最后一页不足五行),这时从数据库里取数据需要算一下这一页要多少行,并且最后返回的总页数都是r+1(这个就不多说了,至于为啥是r+1,除法取整原理)
            if (r + 1 == pageindex) {
  
                List<PaperInfo> list = (from paperinfo in Context.PaperInfo where paperinfo.UserId == UserId orderby paperinfo.SubmitTime select paperinfo).Skip(a*pageindex-a).Take(x-a*pageindex+a).ToList();
                 QueryPageModel<PaperInfo> model = new QueryPageModel<PaperInfo>() { Models = list, Total = r+1 };
                return model;
            }
            //这里else说明要不现在不是处于最后一页,要不就是处于最于最后一页并且最后一页是满的,也就是说明处于一个满的页面上,这时从数据库里取数据都是一样的,因为都是取a行,但是返回的总页数不一定一样,因为可能最后一页不是满的,此时就要r+1,所以又分了两种情况
            else {
            //这里是最后一页是满的情况,总页数就等于r
                if (x % a == 0) {

                List<PaperInfo> list = (from paperinfo in Context.PaperInfo where paperinfo.UserId == UserId orderby paperinfo.SubmitTime select paperinfo).Skip(a * pageindex - a).Take(a).ToList();
                 QueryPageModel < PaperInfo > model = new QueryPageModel<PaperInfo>() { Models = list, Total = r  };
                    return model;
                } 
                //这里是最后一页不是满的情况,此时总页数等于r+1
                else 
                {
                    List<PaperInfo> list = (from paperinfo in Context.PaperInfo where paperinfo.UserId == UserId orderby paperinfo.SubmitTime select paperinfo).Skip(a * pageindex - a).Take(a).ToList();
                     QueryPageModel < PaperInfo > model = new QueryPageModel<PaperInfo>() { Models = list, Total = r + 1 };
                    return model;
                }
               
            }
            
        }


只给大家做个参考,提供一个思路,有什么建议欢迎提出,我是小白,大佬们轻喷。

原创文章 24 获赞 2 访问量 932

猜你喜欢

转载自blog.csdn.net/weixin_43653187/article/details/85089853