ASP.NET-分页操作

前言:

    分页,这个名词,我相信大家对它都不会很陌生的吧;无论是我们浏览网页,还是阅读文章;我们经常都在使用前/后页,首页,尾页等这些操作。

正文:

    那么?究竟何为分页那,我们又该如何一步步操作实现那,这似乎是一个难题,此时想起“天下一切难题,知识给你答案”;哈哈哈,其实实际操作或许不难,但是我们一定要想通究竟怎么操作。

   思路步骤:(输入:pageSize)

 1. 查询数据库中返回的数据,然后让其显示在页面中,此时分页发挥作用;

 2. 一种有多少条,共展示多少页,每页展示多少数据;如何动态的分配,这里就有点棘手了。

   DAL(数据访问层)

1:数据中一共有多少条记录?

 通过sql语句“select count(*) from UserInfo”配合command.ExecuteScalar()属性使用;

 2:页面中应该显示多少页?

 获取总的页数, 通过记录总数,和用户定义的条数(pagesize)相比较

int pageCount=Convert.ToInt32(Math.Ceiling((double)recoredCount / pageSize));
//取余数Math.Ceiling((double))
//取整Convert.ToInt32()

3:如何动态的根据用户的选择(每页显示条数:pageSize),展示每页多少数据;

“select * form(select *,row_number() over(order by id) as num from userInfo) as t where t.num>start and t.num<end ”
//为什么不直接通过判断主键id的值来判断范围,因为有可能主键的id值不连续,导致每页展示的数据量不够;

//嵌套select,因为新增列num非userinfo表中的字段,默认条件会先执行where后面的,所以需要嵌套。

   BLL(业务逻辑层)  

int start=(pageIndex-1)*pageSize+1;

int end = pageIndex * pageSize;

return UserInfoDal.GetPageList(start, end);//返回list<UserInfo>

   Web界面:

那么此时web界面仅需要用户自己选择,页面展示的数据尺寸即可;(1)但是这里有一个问题,就是需要判断,这里不能超出第一页数据,也不能超出尾页的数据;(2)但是首次访问页面的话,应该展示哪页的数据那,当然是第一页的,所以增加了一个判断,今后使用的次数还会更多的;

 int pageIndex;

 if(!int.TryParse(Request.QueryString["pageIndex"],out pageIndex))

 {

//int.trypase()//成功的话,返回true,否则返回false;首次接收的时候,不会从aspx页面中通过get请求获取任何数据,当然默认就是首页

//out传参数,更有意思了,在方法体外面定义,但是通过方法体中进行赋值,导致外面的变量被赋值;

      pageIndex=1;

 }

 BLL.UserInfoService UserInfoService = new BLL.UserInfoService();

 int pagecount = UserInfoService.GetPageCount(pageSize);//获取总页数

 //对当前页码值范围进行判断

 pageIndex = pageIndex < 1 ? 1 : pageIndex;

 pageIndex = pageIndex > pagecount ? pagecount : pageIndex;

   扩充知识点:

(1)aspx页面中通过增加pageindex的值,传到后端中进行数据返回;


<div class="pages"><a href="NewList.aspx?pageIndex=1">首页</a>  |  <a href="NewList.aspx?pageIndex=<%=PageIndex-1<1?1:PageIndex-1%>"> 前页</a>  |  <a href="NewList.aspx?pageIndex=<%=PageIndex+1>PageCount?PageCount:PageIndex+1%>">后页</a> | <a href="NewList.aspx?pageIndex=<%=PageCount%>"> 尾页 </a>        页次:<%=PageIndex%>/<%=PageCount%>页 </div>

(2)当然了,从后端数据传到前端也更是有意思的

 public string StrHtml { get; set; }

 StringBuilder sb = new StringBuilder();

 foreach (UserInfo userInfo in list)

 {

  sb.AppendFormat("<li><span>{0}</span><a href='#' target='_blank'>{1}</a></li>",userInfo.RegTime.ToShortDateString(),userInfo.UserName);

  }

  StrHtml = sb.ToString();

            前端接收:

<%=StrHtml %>

后记:

后期会继续补充完善此博客,将“数字分页”功能思路步骤写到里面,敬请期待,素质点击、关注、评论一条龙;

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 61
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 61
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值