分页是Web中经常遇到的功能,分页主要有真分页和假分页。

  所谓真分页是指:每一页显示多少数据,就从数据库读多少数据;

  假分页是指:一次性从数据库读取所有数据,然后再进行分页。

这两种分页方式区别在于从数据库读取信息的方式,真分页的效率高。假分页在首次页面加载的时候会比较慢(如果数据量较多)。

  下面学习下使用AspNetPager进行真分页

1.前台编写Repeater所呈现的数据:

  1. <table width="" border="">
  2. <tr>
  3. <td class="tr1">
  4. <asp:Label Text="姓名" runat="server"></asp:Label>
  5. </td>
  6. <td class="tr2">
  7. <asp:Label Text="所在公司" runat="server"></asp:Label>
  8. </td>
  9. <td class="tr3">
  10. <asp:Label Text="注册ID" runat="server"></asp:Label>
  11. </td>
  12. </tr>
  13. </table>
  14.  
  15. <asp:Repeater ID="Repeater1" runat="server">
  16. <ItemTemplate>
  17. <table border="" width="">
  18. <tr>
  19. <td class="tr1">
  20. <%#Eval("E_Id")%>
  21. </td>
  22. <td class="tr2">
  23. <%#Eval("C_Id") %>
  24. </td>
  25. <td class="tr3">
  26. <%#Eval("User_Id") %>
  27. </td>
  28. </tr>
  29. </table>
  30. </ItemTemplate>
  31. </asp:Repeater>

aspx

aaarticlea/png;base64,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" alt="" />

2.加入AspNetPager控件

  1. <webdiyer:AspNetPager ID="AspNetPager1" runat="server"
  2. AlwaysShow="true" //始终显示分页控件,即使至分成一页
  3. UrlPaging="true" //通过URL传递分页信息
  4. NumericButtonTextFormatString="[{0}]" //索引格式
  5. ShowCustomInfoSection="Left" //显示当前页和总页数信息,默认值不显示,为left则将显示在页索引前,为right则为页索引后
  6. ShowInputBox="Always" //输入框
  7. TextAfterInputBox="页" //输入框之后
  8. TextBeforeInputBox="跳转到第" > //输入框之前
  9. </webdiyer:AspNetPager>

3.后台分页及绑定数据

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. if (!IsPostBack)
  4. {
  5. BindRepeater();
  6. }
  7. }

a.BindRepeater()函数,绑定数据库等操作

  1. public void BindRepeater()
  2. {
  3. this.AspNetPager1.PageSize = ;//分页大小
  4. int count = ;//当前页默认为1
  5.  
  6. if (Request.QueryString["page"] != null)//如果当前页非空,则将URL中的page赋值为当前页的值
  7. {
  8. count = Convert.ToInt32(Request.QueryString["page"].ToString());//使用URL传递分页信息,(如果使用AspNetPager的PageChanged函数,会在函数中调用两次PageChanged函数,影响运行效率)
  9. }
  10. int num = (count - ) * this.AspNetPager1.PageSize; //当前页减1,乘以每页显示数目,得到前几页的数据数量
  11. string sql = "select top " + this.AspNetPager1.PageSize + " * from Emp where E_Id not in (" +
  12. " select top " + num + " E_Id from Emp order by E_Id asc) order by E_Id asc";//自定义的SQL语句,查找当前页的数据
  13. int recordcount;
  14. DataSet ds = GetPage(sql, this.AspNetPager1.CurrentPageIndex, this.AspNetPager1.PageSize, out recordcount);
  15. this.AspNetPager1.RecordCount = recordcount;
  16. Repeater1.DataSource = ds;
  17. Repeater1.DataBind();
  18. AspNetPager1.CustomInfoHTML = "记录总数:<b>" + AspNetPager1.RecordCount.ToString() + "</b>";
  19. AspNetPager1.CustomInfoHTML += " 总页数:<b>" + AspNetPager1.PageCount.ToString() + "</b>";
  20. AspNetPager1.CustomInfoHTML += " 当前页:<font color=\"red\"><b>" + count + "</b></font>";
  21.  
  22. }

b.GetPage函数,返回数据集

  1. /// <summary>
  2. /// 获得数据源
  3. /// </summary>
  4. /// <param name="sql">sql语句</param>
  5. /// <param name="currentPage">当前页</param>
  6. /// <param name="pagesize">分页大小</param>
  7. /// <param name="recordcount">总页数</param>
  8. /// <returns>DataSet</returns>
  9. public DataSet GetPage(string sql, int currentPage, int pagesize, out int recordcount)
  10. {
  11. // String strSql = "select * from Emp";
  12. SqlDataAdapter ada = new SqlDataAdapter(sql, GetConnection());
  13. DataSet ds = new DataSet();
  14. //int startRow = (currentPage - 1) * pagesize;
  15. //ada.Fill(ds, startRow, pagesize, "table");//对读取到的数据进行分页,假分页时可以这样操作
  16. ada.Fill(ds, "table"); //填充
  17. recordcount = GetPageRecord();//得到总页数
  18. return ds;
  19. }

c.GetPagRecord函数,获得总记录数

  1. /// <summary>
  2. /// 获得总记录数
  3. /// </summary>
  4. /// <param name="sql"></param>
  5. /// <returns></returns>
  6. public int GetPageRecord()
  7. {
  8. String sql = "select count(*) from Emp";
  9. SqlCommand cmd = new SqlCommand(sql, GetConnection());
  10. cmd.Connection.Open();
  11. int recordcount = (int)cmd.ExecuteScalar();
  12. return recordcount;
  13. }

d.GetConnection,获得连接串

  1. public SqlConnection GetConnection()
  2. {
  3. SqlConnection conn = new SqlConnection("server=.;database=ComInfo;integrated security=true");
  4. return conn;
  5. }

Repeater绑定数据库,使用AspNetPager进行分页的更多相关文章

  1. Repeater绑定数据库

    前台: <table width="> <tr> <td class="tr1"> <asp:Label Text=" ...

  2. 如何用visual studio控件(repeater)绑定数据库(SQL server)信息并显示

    今天学习了下如何间接绑定数据库网上看了很多信息,都云里雾里,没有图片说明,初学者完全看不懂,我自己做了一个DEMO,相信可以帮到大家! 一.建立数据库,并构建表信息,我的表信息如下: 表中的数据在数据 ...

  3. SqlServer分页存储过程(多表查询,多条件排序),Repeater控件呈现数据以及分页

        存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出 ...

  4. AspNetPager 免费分页控件7.5.1版发布!

    AspNetPager 免费分页控件7.5.1版发布,本次升级主要内容有: 修正了ShowDisabledButtons为false时html闭合标签丢失的bug:改为从System.Web.UI.W ...

  5. TreeView树形控件递归绑定数据库里的数据

    TreeView树形控件递归绑定数据库里的数据. 第一种:性能不好 第一步:数据库中查出来的表,字段名分别为UNAME(显示名称),DID(关联数据),UTYPE(类型) 第二步:前台代码 <% ...

  6. Repeater控件使用(含删除,分页功能)

    Repeater控件使用(含删除,分页功能) 摘自:http://www.cnblogs.com/alanliu/archive/2008/02/25/914779.html 前臺代碼 <%@ ...

  7. comboBox绑定数据库、模糊查询

    实现: 一.绑定数据库 点击查询按钮,comboBox显示从数据库查到的某字段的一列数据 方法:在按钮的点击事件绑定数据库 private void button1_Click(object send ...

  8. 理解asp.net中DropDownList编辑数据源,绑定数据库数据。

    一.理解asp.net绑定数据库 终于学习到了连接数据库部分的内容,杨中科老师视频看起来挺轻松的,如果是高清版就更ok了. 我发现我学习新的编程语言会有一个特点,都想要赶紧学习数据库,数据就是一切,有 ...

  9. 【转】通用分页用户控件(DataGrid,DataList,Repeater都可以用它来分页)

    通用分页控件(DataGrid,DataList,Repeater都可以用它来分页) 1.建立用户控件Pager.ascx 1.1 html </ASP:LABEL></TD> ...

随机推荐

  1. SJA1000寄存器设置

    在设置CAN控制器SJA1000的输出控制寄存器(OCR)时,由于电路图中只用到了TX0和RX0,所以只考虑OCTP0,OCTN0,OCPOL0.这里设置成了010.然后查了一下配置的表,如下所示: ...

  2. 转:15 Best Responsive Web Design Testing Tools

    Responsive Web Design is regarded as being the approach which suggests that web design and developme ...

  3. 转:堆(heap)和栈(stack)有什么区别??

    简单的可以理解为: heap:是由malloc之类函数分配的空间所在地.地址是由低向高增长的. stack:是自动分配变量,以及函数调用的时候所使用的一些空间.地址是由高向低减少的. 预备知识—程序的 ...

  4. MySQL执行外部sql脚本

    1:-/mysql_test/test.sql create table student( sno int not null primary key auto_increment, sname ) n ...

  5. PADS Layout将导入DXF,并转换成板框步骤

    1.在PADS Layout中选择 Import... 2.选择DXF文件(一般由结构工程师给出),直接点OK即可. 3.导入后,板框图一角视图如下.右键选择 Select Shapes,然后双击外框 ...

  6. 关于NAT穿透的一些理解

    前些天在知乎回答了一个智能家居远程控制方面的问题,感觉自己对无公网IP地址环境下的穿透问题有些了解.昨天同事拿来一个网络摄像头,安装在ADSL路由器上网的环境下,可以远程查看视频,效果还挺不错,问我厂 ...

  7. Qt入门(3)——信号和槽

    信号和槽用于对象间的通讯.信号/槽机制是Qt的一个中心特征并且也许是Qt与其它工具包的最不相同的部分.在图形用户界面编程中,我们经常希望一个窗口部件的一个变化被通知给另一个窗口部件.更一般地,我们希望 ...

  8. 【转】Thunderbird中配置签名

    原文网址:https://support.mozilla.org/zh-CN/kb/Thunderbird%E4%B8%AD%E9%85%8D%E7%BD%AE%E7%AD%BE%E5%90%8D “ ...

  9. 黑马程序员_Java集合框架

    集合类 1,为什么出现集合类? 面向对象语言对食物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 2,数组和集合类同是容器,有何不同? 数组 ...

  10. linux内存管理--slab及其代码解析

    Linux内核使用了源自于 Solaris 的一种方法,但是这种方法在嵌入式系统中已经使用了很长时间了,它是将内存作为对象按照大小进行分配,被称为slab高速缓存. 内存管理的目标是提供一种方法,为实 ...