分页“真分页”获取数据

对于初学的新手来说,做数据分页的时候,经常是去网上下载个控件,所谓控件分页,有的人认为很好,因为方便,但是对于老鸟来说

控件分页查询效率太低,在实际工作中,也会带来致命的弱点,所以,我们一般采用真分页,部分查询,效率没得说!!

石家庄ReactNative交流群 526955818欢迎大家加入

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.Mvc;
//命名空间换成引用它的类的同一个层次
namespace System.Web.Mvc
{
    public static class MyHtmlPage
    {
        /// <summary>
        ///
        /// </summary>
        /// <param name="htmlHelper"></param>
        /// <param name="currentPage"></param>
        /// <param name="sizePage"></param>
        /// <param name="totalPage"></param>
        /// <returns></returns>
        public static HtmlString ShowPageNavigate(this HtmlHelper htmlHelper,int currentPage,int pageSize,int totalCount)
        {
            //获取重定向的url
            var redierctTo = htmlHelper.ViewContext.RequestContext.HttpContext.Request.Url.AbsolutePath;
            pageSize = pageSize == 0 ? 3 : pageSize;
            var totalPages = Math.Max((totalCount + pageSize - 1)/pageSize, 1);
            var output=new StringBuilder();
            if (currentPage > 1)
            {
                if (currentPage!=1)
                {
                    //处理首页链接
                    output.AppendFormat("<a class=‘pageLink‘ href=‘{0}?pageIndex=1&pageSize={1}‘>首页</a>", redierctTo,
                        pageSize);
                }
                if (currentPage>1)
                {
                    //处理上一页链接
                    output.AppendFormat("<a class=‘pageLink‘ href=‘{0}?pageIndex={1}&pageSize={2}‘>上一页</a>", redierctTo,currentPage-1,
                        pageSize);

}
                else
                {
                    output.AppendFormat("<span class=‘pageLink‘>上一页</span>");
                }
                output.Append(" ");
                int currint = 5;
                for (int i = 0; i < 10; i++)
                {
                    //一页最多显示10个页码 前五 后五
                    if ((currentPage+i-currint>=1&&(currentPage+1-currint<=totalPages)))
                    {
                        
                    }
                    else
                    {
                        if (currint==1)
                        {
                            //处理当前页
                            output.AppendFormat("<a class=‘cpb‘ href=‘{0}?pageIndex={1}&pageSize={2}‘>{3}</a>",redierctTo,currentPage,pageSize,currentPage);

}
                        else
                        {
                            //一般页处理
                            output.AppendFormat("<a class=‘pageLink‘ href=‘{0}?pageIndex={1}&pageSize={2}‘>{3}</a>", redierctTo, currentPage+i-currint, pageSize, currentPage+i-currint);

}
                    }
                    output.Append(" ");
                }
                if (currentPage<totalPages)
                {
                    //处理下一页链接
                    output.AppendFormat("<a class=‘pageLink‘ href=‘{0}?pageIndex={1}&pageSize={2}‘>下一页</a>", redierctTo, currentPage+1,
                        pageSize);
                }
                else
                {
                    //为啥都注释了?
                    output.AppendFormat("<span class=‘pageLink‘>下一页</span>");
                }
                output.Append(" ");

}
            output.AppendFormat("第{0}页/第{1}页",currentPage,totalPages);//加不加这个统计工具都行
            return new HtmlString(output.ToString());

}//分页样式代码搞定
    }
}
//注意下面是分页的样式css

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.Mvc;
//命名空间换成引用它的类的同一个层次
namespace System.Web.Mvc
{
    public static class MyHtmlPage
    {
        /// <summary>
        ///
        /// </summary>
        /// <param name="htmlHelper"></param>
        /// <param name="currentPage"></param>
        /// <param name="sizePage"></param>
        /// <param name="totalPage"></param>
        /// <returns></returns>
        public static HtmlString ShowPageNavigate(this HtmlHelper htmlHelper,int currentPage,int pageSize,int totalCount)
        {
            //获取重定向的url
            var redierctTo = htmlHelper.ViewContext.RequestContext.HttpContext.Request.Url.AbsolutePath;
            pageSize = pageSize == 0 ? 3 : pageSize;
            var totalPages = Math.Max((totalCount + pageSize - 1)/pageSize, 1);
            var output=new StringBuilder();
            if (currentPage > 1)
            {
                if (currentPage!=1)
                {
                    //处理首页链接
                    output.AppendFormat("<a class=‘pageLink‘ href=‘{0}?pageIndex=1&pageSize={1}‘>首页</a>", redierctTo,
                        pageSize);
                }
                if (currentPage>1)
                {
                    //处理上一页链接
                    output.AppendFormat("<a class=‘pageLink‘ href=‘{0}?pageIndex={1}&pageSize={2}‘>上一页</a>", redierctTo,currentPage-1,
                        pageSize);

}
                else
                {
                    output.AppendFormat("<span class=‘pageLink‘>上一页</span>");
                }
                output.Append(" ");
                int currint = 5;
                for (int i = 0; i < 10; i++)
                {
                    //一页最多显示10个页码 前五 后五
                    if ((currentPage+i-currint>=1&&(currentPage+1-currint<=totalPages)))
                    {
                        
                    }
                    else
                    {
                        if (currint==1)
                        {
                            //处理当前页
                            output.AppendFormat("<a class=‘cpb‘ href=‘{0}?pageIndex={1}&pageSize={2}‘>{3}</a>",redierctTo,currentPage,pageSize,currentPage);

}
                        else
                        {
                            //一般页处理
                            output.AppendFormat("<a class=‘pageLink‘ href=‘{0}?pageIndex={1}&pageSize={2}‘>{3}</a>", redierctTo, currentPage+i-currint, pageSize, currentPage+i-currint);

}
                    }
                    output.Append(" ");
                }
                if (currentPage<totalPages)
                {
                    //处理下一页链接
                    output.AppendFormat("<a class=‘pageLink‘ href=‘{0}?pageIndex={1}&pageSize={2}‘>下一页</a>", redierctTo, currentPage+1,
                        pageSize);
                }
                else
                {
                    //为啥都注释了?
                    output.AppendFormat("<span class=‘pageLink‘>下一页</span>");
                }
                output.Append(" ");

}
            output.AppendFormat("第{0}页/第{1}页",currentPage,totalPages);//加不加这个统计工具都行
            return new HtmlString(output.ToString());

}//分页样式代码搞定
    }
}

时间: 2024-11-04 10:41:07

分页“真分页”获取数据的相关文章

ASP.NET真假分页—真分页

 承接上篇博文<ASP.NET真假分页-假分页>:http://blog.csdn.net/u010773667/article/details/38845009,继续讲解ASP.NET真假分页之真分页. 真分页 当数据量过大,有几万甚至十几万条数据时,每次都从数据库中取出所有数据就会降低查询效率,系统运行慢,还有可能卡死,这时假分页就会显得很不人性化,因此有了真分页的必要性. 正如上篇博文总结归纳,"真"相对于"假"存在,即不藕断丝连,从根部彻底断

客户端通过TCP通信分页从服务器获取数据

本文主要探讨,客户端如何通过TCP通信,根据分页信息从服务器获取到相关数据 通常情况下,数据可能很多,比如几千或者几万条,并不适合一次性从服务器获取. 我们只从服务器获取当前页的数据 和数据库中记录总数以便我们可以在客户端计算出页数 ,当用户点击"上一页"或者"下一页"时,再获取相应页的数据 如下图: 双击上图中的某一项,再打开详细页面,如下图: 下面我们从头开始创建一个分页显示的Demo 通信框架采用来自英国开源的networkcomms2.3.1版本 数据库为s

关于资讯,帖子类信息如何避免重复获取数据

场景说明: 当用户处于第一页的时候查看资讯列表(每页十条),这时,后台新增了新的资讯(假设十条),如果按照页数去拿第二页的数据,势必会取出重复的数据. 解决方案: 不按传统的分页方式去获取数据,采用时间戳是获取.拿最后一条的时间戳,进行条件筛选,取指定条数即可. 优点: 避免重复获取数据,加快查询效率.

ASP.NET实现弹出框真分页将复选框选择的数据存到数据库中(一)

ASP.NET实现弹出框真分页将复选框选择的数据存到数据库中,这个问题分一下几步走 1.将弹出框真分页后复选框选择的数据保存. 2.将弹出框保存的数据传到父页面上. 3.将数据在父页面上显示. 4.点击保存将信息存入数据库中. 首先来第一步将弹出框真分页后复选框选择的数据保存. 思路很简单就是先真分页,然后在点击下一页的时候扫描这一页所有点击复选框的数据保存到一个变量数组中.下面就是主要代码: ASP代码: <%@ Page Language="C#" AutoEventWire

MVC 分页获取数据 及点选按钮

@model PagedList<Lyxm.Entity.Suggestion>@using Webdiyer.WebControls.Mvc <div>    <ul class="breadcrumb">        <li>            @Html.ActionLink("基础维护", "", "")            <span class=&quo

php高效获取数据分页

mysql.php 获取数据库中的记录,完全个人经验总结,仅供参考! <?php /** *PHP+MYSQL数据库基本功能 *http://blog.csdn.net/yown */ ############################################ #获取序列ID ############################################ function getSequence() { $sql = "update sequence set id=

使用ivx实现分页获取数据的经验总结

在实际案例中我们经常需要展示一些数据,而这些数据都是存放在后台的数据库之中的而且可能数量庞大,在前台的界面中一下子全都展示出来肯定是不现实的,另外一次性让后台传输如此多的数据到前台也会有很大的延迟,使用户体验较差.因此,我们就需要采取一种分页的方式来少量多次的获取数据,这样用户每次操作之后都能很快得到反馈,同时前台也不用存放很多数据造成案例卡顿,今天就来说说如何实现这种分页效果.1.组件结构Demo中的结构比较简单,页面下放置了一个列作为案例主体,列内添加了一个分页组件,还有一个for容器用于循

NHibernte 4.0.3版本中,使用Queryover().Where().OrderBy().Skip().Take()方法分页获取数据失败

问题代码如下: var result=repository.QueryOver<modal>() .Where(p=>p.Code==Code) .OrderBy(p=>p.ID).Asc .Skip(pageSize*(page-1)) .Take(pageSize).List() 当设置page=1,pageSize=10时,获取数据正常:当设置的page大于1时,获取不到任何数据:原因尚未找到. 解决办法:修改代码如下 var result= repository.Query

GridView真分页全套复用代码(转)

原文地址:GridView真分页全套复用代码作者:jacland 1.页面部分: <PagerTemplate>                           <div style="display: inline; float:right;">                                   <asp:TextBox ID="txbPage" runat="server" BorderSt