c#实现google样式的分页

google|分页

  做一个项目,用到了DATALIST,由于分页的需求,手动写了分页的函数。个人觉得GOOGLE的分页很不错,上网查了下资料,修改了下。

  这里没有涉及到数据的分页读取,只是返回一个带HTML代码的分页样式(字符串),可以用label在页面显示,也可以用this.Controls.Add(new LiteralControl(string));方法加入到页面控件中。

        /**//// <summary>
        /// 类似GOOGLE的分页函数,王传炜,资料参考http://www.phpx.com/happy/viewthread.php?tid=99280&extra=&page=2,谢谢YourEyes
        /// </summary>
        /// <param name="total">总记录数</param>
        /// <param name="per">每页记录数</param>
        /// <param name="page">当前页数</param>
        /// <param name="query_string">Url参数</param>
        private string pagination(int total,int per,int page,string query_string)
        {
            int allpage=0;
            int next=0;
            int pre=0;
            int startcount=0;
            int endcount=0;
            string pagestr="";

            if(page<1){page=1;}
            //计算总页数
            if (per != 0)
            {
                allpage = (total / per);
                allpage = ((total % per) != 0 ? allpage + 1 : allpage);
                allpage = (allpage == 0 ? 1 : allpage);
            }
            next=page+1;
            pre=page-1;
            startcount=(page+5)>allpage?allpage-9:page-4;//中间页起始序号
            //中间页终止序号
            endcount = page<5 ? 10 : page+5;
            if(startcount<1) {startcount=1;} //为了避免输出的时候产生负数,设置如果小于1就从序号1开始
            if(allpage<endcount){endcount=allpage;}//页码+5的可能性就会产生最终输出序号大于总页码,那么就要将其控制在页码数之内
            pagestr="共"+ allpage +"页      ";
           
            pagestr+=page>1 ?  "<a href=\""+ query_string + "?page=1\">首页</a>  <a href=\""+ query_string +"?page="+ pre +"\">上一页</a>": "首页 上一页";
             //中间页处理,这个增加时间复杂度,减小空间复杂度
             for(int i=startcount;i<=endcount;i++)
             {
                 pagestr+=page==i?"  <font color=\"#ff0000\">"+i+"</font>":"  <a href=\""+ query_string +"?page="+ i +"\">"+ i +"</a>";
             }
             pagestr+=page!=allpage ? "  <a href=\""+ query_string+"?page="+ next +"\">下一页</a>  <a href=\""+ query_string +"?page="+ allpage+"\">末页</a>" : " 下一页 末页";

            return pagestr;
        }

时间: 2024-10-06 14:44:48

c#实现google样式的分页的相关文章

asp.net Google样式分页控件

  asp.net Google样式分页控件 使用方法: 引入控件 <%@ Register Assembly="TinyToolBox" Namespace="TinyMS.UI" TagPrefix="tm" %> 使用控件 页码处理事件 protected void TinyPager1_Click(object sender, TinyMS.UI.PagerEventArgs e) { his.Label1.Text = &q

认真做 flex + spring + blazeDS + google app JDO 分页.每次查询总数.

认真做 flex + spring + blazeDS + google app JDO 分页.每次查询总数. 最近被 BlazeDS 折腾的不行了.. 都有点想换成 e4x 格式的 xml 那样来的比较简单.但是终没有放弃.收获还是不错的. 首先是在 explore 里面 使用 SWFLoader 做动态加载. 根据不同的菜单 显示不同的tab 页. 但是 切换 多个标签的时候出现 问题报错: ***TypeError: Error #1034: 强制转换类型失败:无法将 Object@b93

PHP实现可自定义样式的分页类_php技巧

本文实例为大家分享了PHP实现可自定义样式的分页类,供大家参考,具体内容如下 <?php //namespace Component; /** * 2016-3-27 * @author ankang */ class Page { private $ShowPage; private $CountPage; private $Floorp; private $PageUrl; private $PageClass; private $CurClass; /** * @author ankang

php google或baidu分页代码_php技巧

复制代码 代码如下: <?php /** 作者:潇湘博客 时间: 2009-11-26 php技术群: 37304662 使用方法: include_once'Pager.class.php'; $pager=new Pager(); if(isset($_GET['page'])) $pager->setCurrentPage($_GET['page']); else $pager->setCurrentPage(1); $pager->setRecorbTotal(1000);

emlog修改分页样式(分页函数)方法总结

不修改内核实现emlog分页的上页.下页效果 1.先在你使用的模板的module.php文件中增加自定义的分页函数,代码如下:  代码如下 复制代码 <?php //blog:自定义分页函数 function my_page($count, $perlogs, $page, $url, $anchor = '') {  $pnums = @ceil($count / $perlogs);  $re = '';  $urlHome = preg_replace("|[?&/][^./

PHP通用分页类page.php[仿google分页]_php实例

page.php 复制代码 代码如下: <?php /** ** 通用php分页类.(仿Google样式) ** 只需提供记录总数与每页显示数两个参数.(已附详细使用说明..) ** 无需指定URL,链接由程序生成.方便用于检索结果分页. ** 表单采用GET方法提交,可保证在诸如查询之,删除之类的操作时,不丢失URL参数 **/ class Pager{ //IE地址栏地址 var $url; //记录总条数 var $countall; //总页数 var $page; //分页数字链接 v

BootStrap mvcpager分页样式(get请求,刷新页面)_C#教程

使用方法: 先把mvcpager.dll引用加入mvc项目中. 前台代码 前台: @{ Layout = null; } @using Webdiyer.WebControls.Mvc @model PagedList<string> <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <

如此高效通用的分页存储过程是带有sql注入漏洞的

存储过程|分页 在google中搜索"分页存储过程"会出来好多结果,是大家常用的分页存储过程,今天我却要说它是有漏洞的,而且漏洞无法通过修改存储过程进行补救,如果你觉得我错了,请读下去也许你会改变看法.通常大家都会认为存储过程可以避免sql注入的漏洞,这适用于一般的存储过程,而对于通用分页存储过程是不适合的,请看下面的代码和分析! 一般的通用的分页存储过程代码如下: 通用分页存储过程CREATE PROCEDURE pagination@tblName varchar(255), --

asp.net 使用ObjectDataSource控件在ASP.NET中实现Ajax真分页_实用技巧

ListView控件本身并没有分页功能,不过借助于ASP.NET中新增加的DataPager控件,我们可以非常方便地对ListView中的数据设置分页,这几乎不需要开发人员写一行代码,将ListView控件放到页面上,设置好布局和DataSource,然后再添加一个DataPager控件,将它的PagedControlID属性设置成ListView的ID,PageSize中设置每页要显示的数据条数,然后在Fields中设置好分页的样式(当然你完全可以不用去管样式,ASP.NET会根据内置的样式来