好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#实现分页组件的方法

分页无论是前端和后端,基本都有广泛应用!下面通过一个小小案例完成这个分页效果:

参数含义:

string urlformat: 要传给服务器端的url地址格式,方便在点超链接时进行相应的跳转

long totalsize:     总的数据条数。

long pagesize:    每页多少条数据

 long currentpage: 当前的页数

后面通过具体的一个案例来用这个分页方法:

一.分页方法:

?

/// <summary>

   /// 生成页码的html

   /// </summary>

   /// <param name="urlformat">超链接的格式。list.ashx?pagenum={pagenum}。地址中用{pagenum}做为当前页码的占位符</param></param>

   /// <param name="totalsize">总数据条数</param>

   /// <param name="pagesize">每页多少条数据</param>

   /// <param name="currentpage">当前页</param>

   /// <returns></returns>

   public static rawstring pager( string urlformat, long totalsize,

    long pagesize, long currentpage)

   {

    stringbuilder sb = new stringbuilder();

    //总页数

    long totalpagecount = ( long )math.ceiling((totalsize * 1.0f) / (pagesize * 1.0f));

    //当前页的前几页

    long firstpage = math.max(currentpage - 5, 1);

    //当前页的后几页

    long lastpage = math.min(currentpage + 6, totalpagecount);

    //绘制分页,首页

    sb.appendline( "<div><a href='" + urlformat.replace( "{pagenum}" , "1" ) + "'>首页</a>" );

    //绘制分页中间数据部分

    for ( long i = firstpage; i < lastpage; i++)

    {

     string url = urlformat.replace( "{pagenum}" , i.tostring());

     if (i == currentpage) //点击后就不显示超链接

     {

      sb.appendline( "<a>" + i + "</a>" );

     }

     else

     {

      sb.appendline( "<a href='" + url + "'>" + i + "</a>" );

     }

    }

    //显示最后一页

    sb.appendline( "<a href='" + urlformat.replace( "{pagenum}" , totalpagecount.tostring()) + "'>末页</a></div>" );

    return new rawstring(sb.tostring());

   }

二.案例调用:

服务器端(test.ashx):这里为了方便看到效果,展示数据直接用的固定数据

?

public void processrequest(httpcontext context)

   {

    context.response.contenttype = "text/html" ;

    long pn = convert.toint64(context.request[ "pn" ]);

    if (pn == 0) //convert.toint64(null)返回的是0

    {

     pn = 1;

    }

    long [] num = new long [50]; //这里的数据用的是固定数据

    for ( int i = 0; i < 50; i++)

    {

     num[i] = ((pn-1) * 50) + i;

    }

    outputrazor(context, "~/test.cshtml" , new { nums=num,page=pn}); //这里用的razor模板引擎

   }

这里的razor方法见:razor模板引擎简单介绍

ui端展示(test.cshtml):

?

< body >

   < ul >

     @{

   foreach (int i in model.nums)

   {

    < li >@i</ li >

   }

   }

    </ ul >

   @pager("test.ashx?pn={pagenum}", 1020, 50, model.page);

</ body >

效果图:

三.jquery分页插件:

前面写的这些主要是进行功能的实现,样式效果差了点。下面贴上通过jquery实现的分页效果

jquery的效果图,及调用方法:

 完整代码:

?

<!doctype html>

< html lang = "zh-cn" xmlns = "http://HdhCmsTestw3.org/1999/xhtml" >

< head >

< meta charset = "utf-8" />

< title >一个非常简单的jquery分页插件</ title >

< style >

*{ margin:0; padding:0; list-style:none;}

a{ text-decoration:none;}

a:hover{ text-decoration:none;}

.tcdpagecode{padding: 15px 20px;text-align: left;color: #ccc;}

.tcdpagecode a{display: inline-block;color: #428bca;display: inline-block;height: 25px; line-height: 25px; padding: 0 10px;border: 1px solid #ddd; margin: 0 2px;border-radius: 4px;vertical-align: middle;}

.tcdpagecode a:hover{text-decoration: none;border: 1px solid #428bca;}

.tcdpagecode span.current{display: inline-block;height: 25px;line-height: 25px;padding: 0 10px;margin: 0 2px;color: #fff;background-color: #428bca; border: 1px solid #428bca;border-radius: 4px;vertical-align: middle;}

.tcdpagecode span.disabled{ display: inline-block;height: 25px;line-height: 25px;padding: 0 10px;margin: 0 2px; color: #bfbfbf;background: #f2f2f2;border: 1px solid #bfbfbf;border-radius: 4px;vertical-align: middle;}

</ style >

</ head >

< body >

<!-- 代码部分begin -->

  < div class = "tcdpagecode" >

  </ div >

  < pre >

  调用方法:

  $(".tcdpagecode").createpage({

   pagecount:20,

   current:1,

   backfn:function(p){

    //单击回调方法,p是当前页码

   }

  });

  pagecount:总页数

  current:当前页

  </ pre >

</ body >

< script src = "/ajaxjs/jquery.min.js" ></ script >

< script src = "/ajaxjs/jquery.page.js" ></ script >

< script >

  $(".tcdpagecode").createpage({

   pagecount:20,

   current:5,

   backfn:function(p){

    console.log(p);

   }

  });

</ script >

<!-- 代码部分end -->

</ html >

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://HdhCmsTestcnblogs测试数据/fengxuehuanlin/p/5373814.html

dy("nrwz");

查看更多关于C#实现分页组件的方法的详细内容...

  阅读:39次