一直想做一个属于自己的分页,

1:我试过用datapage,虽然是很好用,但是必须要配合datalist才能使用,感觉不太好

2:自己写分页控件,目前正在摸索中,关键是怎么分页的问题,有的是用datatable传进去分页,感觉效率有点低

3:就是今天我使用的方法,存储过程+Div+css分页了

说明:本人是毕业半年的菜鸟,以下程序全是按照自己的想法来写的,原创勿喷,并请大神们给出指导,谢谢了。

1:建好存储过程

  1. ALTER procedure [dbo].[p_news_query]
  2. @Page int
  3. as
  4. begin
  5. select top new_id,new_title,new_url,new_content_text,create_time,user_name from
  6. (select *,ROW_NUMBER() over(order by new_id desc ) as RowNumber from
  7. (select new_id,new_title,new_url,new_content_text,
  8. dbo.f_ConvertDate(a.create_time) create_time, b.user_name from xs_new a
  9. left join xs_users b on b.user_no=a.create_user
  10. )TI
  11. ) A
  12. where A.RowNumber>(@Page-)*
  13.  
  14. end

目前实验的是每页5条数据,传入当前页码就可以了

2:前台定义一个div ,用于显示

  1. <div id="divPage" runat="server" class="divpage">
  2. </div>

3:后台根据传入参数来拼html

目前是模仿博客园的模式,前后显示5条,多余的加...后到最后一条

  1. StringBuilder sbr = new StringBuilder();
  2. int ITotalCount = pageLogic.QueryNewsCount();
  3. int IPage = ;
  4. if (Request["p"] != null)
  5. {
  6. IPage = Convert.ToInt32(Request["p"]);
  7. }
  8. int IPageCount = ;
  9. int ITotalPage = ITotalCount / IPageCount;
  10. if (ITotalCount % IPageCount > )
  11. {
  12. ITotalPage += ;
  13. }
  14.  
  15. if (IPage != )
  16. {
  17. sbr.Append("<a href=\"news.aspx?p=" + (IPage - ).ToString() + "\">上一页</a>");
  18. }
  19.  
  20. if (ITotalPage <= )
  21. {
  22. for (int i = ; i <= ITotalPage; i++)
  23. {
  24. if (i == IPage)
  25. {
  26. sbr.Append("<a href=\"news.aspx?p=" + i.ToString() + "\" class=\"pageSelect\">" + i.ToString() + "</a>");
  27. }
  28. else
  29. {
  30. sbr.Append("<a href=\"news.aspx?p=" + i.ToString() + "\">" + i.ToString() + "</a>");
  31. }
  32. }
  33. }
  34. else
  35. {
  36.  
  37. if (IPage - > && IPage + < ITotalPage)//前后都有的
  38. {
  39. sbr.Append("<a href=\"news.aspx?p=1\">1</a>...");
  40. for (int i = IPage - ; i <= IPage + ; i++)
  41. {
  42. if (i == IPage)
  43. {
  44. sbr.Append("<a href=\"news.aspx?p=" + i.ToString() + "\" class=\"pageSelect\">" + i.ToString() + "</a>");
  45. }
  46. else
  47. {
  48. sbr.Append("<a href=\"news.aspx?p=" + i.ToString() + "\">" + i.ToString() + "</a>");
  49. }
  50.  
  51. }
  52. sbr.Append("...<a href=\"news.aspx?p=" + ITotalPage.ToString() + "\">" + ITotalPage.ToString() + "</a>");
  53.  
  54. }
  55. else if (IPage - <= )//前面不够,后面有多余
  56. {
  57. for (int i = ; i <= ; i++)
  58. {
  59. if (i == IPage)
  60. {
  61. sbr.Append("<a href=\"news.aspx?p=" + i.ToString() + "\" class=\"pageSelect\">" + i.ToString() + "</a>");
  62. }
  63. else
  64. {
  65. sbr.Append("<a href=\"news.aspx?p=" + i.ToString() + "\">" + i.ToString() + "</a>");
  66. }
  67. }
  68. sbr.Append("...<a href=\"news.aspx?p=" + ITotalPage.ToString() + "\">" + ITotalPage.ToString() + "</a>");
  69. }
  70. else if (IPage + >= ITotalPage)//前面多余,后面不足
  71. {
  72. sbr.Append("<a href=\"news.aspx?p=1\">1</a>...");
  73. for (int i = ITotalPage - ; i <= ITotalPage; i++)
  74. {
  75. if (i == IPage)
  76. {
  77. sbr.Append("<a href=\"news.aspx?p=" + i.ToString() + "\" class=\"pageSelect\">" + i.ToString() + "</a>");
  78. }
  79. else
  80. {
  81. sbr.Append("<a href=\"news.aspx?p=" + i.ToString() + "\">" + i.ToString() + "</a>");
  82. }
  83. }
  84.  
  85. }
  86.  
  87. }
  88. if (IPage != ITotalPage)
  89. {
  90. sbr.Append("<a href=\"news.aspx?p=" + (IPage + ).ToString() + "\">下一页</a>");
  91. }
  92. divPage.InnerHtml = sbr.ToString();
  93. rptNews.DataSource = pageLogic.QueryNews(IPage);
  94. rptNews.DataBind();

4:实验效果

asp.net 分页-利用后台直接生成html分页的更多相关文章

  1. ASP.NET MVC 利用Razor引擎生成静态页

    实现原理及步骤: 1.通过ViewEngines.Engines.FindView查找到对应的视图,如果是部分视图,则用:ViewEngines.Engines.FindPartialView: 2. ...

  2. Spring boot入门(三):SpringBoot集成结合AdminLTE(Freemarker),利用generate自动生成代码,利用DataTable和PageHelper进行分页显示

    关于SpringBoot和PageHelper,前篇博客已经介绍过Spring boot入门(二):Spring boot集成MySql,Mybatis和PageHelper插件,前篇博客大致讲述了S ...

  3. ASP.NET MVC利用PagedList分页(二)PagedList+Ajax+JsRender

    (原文) 昨天在ASP.NET MVC利用PagedList分页(一)的 最后一节提到,一个好的用户体验绝对不可能是点击下一页后刷新页面,所以今天来说说利用Ajax+PagedList实现无刷新(个人 ...

  4. 利用QrCode.Net生成二维码 asp.net mvc c#

    利用QrCode.Net生成二维码 asp.net mvc c# 里面介绍了.net的方式及js的方式,还不错. 里面用到的qrcode.net的类库下载地址:https://qrcodenet.co ...

  5. 基于Asp.Net Core,利用ZXing来生成二维码的一般流程

    本文主要介绍如何在.net环境下,基于Asp.Net Core,利用ZXing来生成二维码的一般操作.对二维码工作原理了解,详情见:https://blog.csdn.net/weixin_36191 ...

  6. asp.net mvc 简易通用自定义Pager实现分页

    asp.net mvc 自定义Pager实现分页 Intro 一个WEB应用程序中经常会用到数据分页,本文将实现一个简单通用的分页组件,包含一个 PagerModel (用来保存页码信息),一个 Ht ...

  7. 利用代码生成工具生成基于ABP框架的代码

    在前面随笔,我介绍了整个ABP优化过框架的分层模型,包括尽量简化整个ABP框架的各个层的关系,以及纳入一些基类的辅助处理,使得我们对应业务分层类或者接口尽可能减少代码,并具有生产环境所需要的基类接口, ...

  8. 利用Java动态生成 PDF 文档

    利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那 ...

  9. 解析利用wsdl.exe生成webservice代理类的详解

    利用wsdl.exe生成webservice代理类:根据提供的wsdl生成webservice代理类1.开始->程序->Visual Studio 2005 命令提示2.输入如下红色标记部 ...

随机推荐

  1. 分享书籍[writing idiomatic python ebook]

    你是不是总是觉得学了python好久,蓦然回首,总是感觉写的代码不是那么有pythonic的味道.看看别人的代码(django,webpy),再看看自己的代码,觉得就是一java-python的混合体 ...

  2. UITableView + UISearchBar 实现搜索功能

    #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...

  3. ajax get和post请求 后端接收并返回数据

    get请求$(function(){ //alert("23"); var x = "#page"; var y = "${ctx!}/static/ ...

  4. PAT 解题报告 1003. Emergency (25)

    1003. Emergency (25) As an emergency rescue team leader of a city, you are given a special map of yo ...

  5. AXIS2调用web service,返回结果用GZIP解压缩

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...

  6. [转]mongodb 查询条件:关系运算符"$lt", "$lte", "$gt", "$gte", "$ne" 逻辑运算符"$and“, "$or“, "$nor“

    mongodb 查询条件   这节来说说mongodb条件操作符,"$lt", "$lte", "$gt", "$gte" ...

  7. 封装smarty类

    <?php/** * Project:     Smarty: the PHP compiling template engine * File:        Smarty.class.php ...

  8. /Users/alamps/AndroidStudioProjects/Demo10ScrollView

    .define xml <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" andr ...

  9. 整理的java的日期DateUtil

    package cn.knet.data.untils; import java.text.SimpleDateFormat; import java.util.Calendar; import ja ...

  10. PAT乙级 1019. 数字黑洞 (20)

    1019. 数字黑洞 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定任一个各位数字不完全相同的4位 ...