当前位置:编程学习 > asp >>

asp.net学习_分页的设计

分页是每一个程序员都每天都在打交道的东西,分页.

一年前,刚接触的时候,根本不知道什么叫做分页,后台,xxx说,如果数据过多一次,成千上万条,你一次只看到10-20条,为什么要全部显示呢?当时感觉很震撼,为什么呢?

以下内容是以前的代码(不要扔鸡蛋,我现在看了都有恨不得砸电脑的冲动)

  于是我们就用了第一个分页版本,当时,两个实验室的"战士"研究了好久,找到一个存储过程的分页,当时感觉好神奇!找找当时凌乱的分页调用程序:

现在看了都要砸电脑的冲动的东东.....
 
后来做web,凌乱依旧,web版本的分页程序,

后来才发现一个叫做aspnetpager的控件,发现好强大呀,易用,方便,而且不用写那么复杂的存储过程以及调用,


 慢慢的发现,这些控件都是死的,写死的东西,根本没有灵活性,特别是美工做个好看点的分页之类的,只能干瞪眼,要不就按照它的格式做分页样式,这是一个纠结的问题,
既然不灵活,为什么不自己做控件?
后来就自己写分页的用户控件....
 
不过仍然不够灵活,上网找资料.
 
 

发现,手写一个分页类就行了,分页不就是计算页面大小,然后输出页码和连接么?
然后就是这个版本
   1:    //  //记录日志
   2:      private static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
   3:      //输出的PagerHtml代码
   4:      public string PagerHtml = "";
   5:      protected void Page_Load(object sender, EventArgs e)
   6:      {
   7:          try
   8:          {
   9:              string TypeId = Request["TypeId"];
  10:              //查询条件
  11:              string strCondition = "";
  12:              //字符串注入检测
  13:              if (!string.IsNullOrEmpty(TypeId) && Tools.IsValidInput(ref TypeId, true))
  14:                  strCondition = "TypeId=" + TypeId;
  15:  
  16:              //分页实现
  17:              var pager = new Common.RupengPager();
  18:              pager.UrlFormat = "NewsList.aspx?pagenum={n}&TypeId=" + TypeId;
  19:              pager.PageSize = 30;
  20:              pager.TryParseCurrentPageIndex(Request["pagenum"]);
  21:  
  22:              //分页数据读取
  23:              newsBLL bll = new newsBLL();
  24:              DataTable dt = bll.ListByPaginationForView("Time", pager.PageSize, pager.CurrentPageIndex, "1", strCondition);
  25:  
  26:              //获取总页数
  27:              pager.TotalCount = bll.GetVNewsListCount(strCondition);
  28:              rpData.DataSource = dt;
  29:              rpData.DataBind();
  30:  
  31:              //渲染页码条HTML
  32:              PagerHtml = pager.Render();
  33:          }
  34:          catch (Exception ex)
  35:          {
  36:              logger.Error("错误:", ex);
  37:          }
  38:      }
效果也就是这样:
前台就是
   1:  <%@ Page Language="C#" MasterPageFile="~/InfoPage.master" AutoEventWireup="true" CodeFile="NewsList.aspx.cs" Inherits="News_NewsList" Title="新闻列表" %>
   2:  
   3:  <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
   4:      <link href="../css/other.css" rel="stylesheet" type="text/css" />
   5:      <link href="../css/Pager.css" rel="stylesheet" type="text/css" />
   6:  </asp:Content>
   7:  <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
   8:      <%--GetNewsTypeInfoForNewsByJson--%>
   9:  
  10:     <div class="list">
  11:          <div class="list_title"><h4>新闻列表</h4><span>当前位置:<a href="../Default.aspx">首页</a> > 新闻列表</span></div>
  12:          <ul>
  13:              <asp:Repeater ID="rpData" runat="server">
  14:              <ItemTemplate>
  15:               <li><a href='ViewNews.aspx?NewsId=<%#Eval("Id") %>'>[<%#Eval("TypeName")%>]<%#Eval("Title")%></a><span><%#Eval("Time")%></span></li>
  16:              </ItemTemplate>
  17:              </asp:Repeater>
  18:          </ul>
  19:          <div class="page">
  20:      &nb

补充:Web开发 , ASP.Net ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,