.net 文章分页

发现在文章细览页面文字过长便会出现页面严重拉长的现象,为了解决此问题,应当对本页面的文章进行分页控制,写出来代码与大家分享:

     /// <summary>
     
/// 长内容分页 哈希表需要引用命名空间System.Collections 
     
/// </summary>
     
/// <param name="n_content">新闻内容</param>
     
/// <param name="page">是新闻当前页数</param>
     
/// <param name="size">每页显示字符长度</param>
     
/// <param name="linkurl">页码链接地址</param>
     
/// <returns></returns>

      public  System.Collections.Hashtable SeparatePages( string  n_content,  string  page,  int  size, string  linkurl)
     
{
         
//在此处放置初始化页的用户代码
         System.Collections.Hashtable returnHash = new System.Collections.Hashtable();
         
int start, stops, t, stat, pp, pagecount, pagesize;
         
string pa, articletxt, articletext, html;
         
int pig = 0;

         
//变量初始值
         stat = 0;
         start 
= 0//开始查询的字符串位置,初始为0
         stops = 0;
         pagesize 
= size;//定义每页至少显示字符串数
         pagecount = 0;
         html 
= "";

         
//获得当前的页数
         pa = page;
         
if (pa == "" || pa == null)
         
{
             pa 
= "1";
         }

         pp 
= Convert.ToInt32(pa);

         
//获得内容
         articletxt = n_content;

         
//判断页面的内容长度是否大于定义的每页至少显示字符串数
         if (articletxt.Length >= pagesize) // 如果大于字符串数,则我们可以分页显示
         {
             t 
= articletxt.Length / pagesize; //获得大致的总页数
             for (int j = 0; j <= t; j++)
             
{    //如果查询开始位置到查询的范围超出整个内容的长度,那么就不用寻找断点(分页点);反之,查找
                 if (start + pagesize < articletxt.Length)
                 
{
                     stat 
= articletxt.ToLower().IndexOf("</p>", start + pagesize); //查找</P>分页点的位置
                     if (stat == -1)
                         stat 
= articletxt.ToLower().IndexOf("<br>", start + pagesize); //查找</P>分页点的位置
                     if (stat == -1)
                         stat 
= articletxt.ToLower().IndexOf("<br/>", start + pagesize); //查找</P>分页点的位置
                 }

                 
if (stat <= 0)//如果找不到
                 {

                 }

                 
else
                 
{
                     stops 
= stat; //分页点的位置也就作为这一页的终点位置

                     
if (start < articletxt.Length)
                     
{
                         
if ((articletxt.Length - start) < pagesize)
                         
{
                             
if (pig == 0)
                             
{
                                 pagecount 
= pagecount + 1;
                             }

                             pig 
= 1;
                         }

                         
else
                         
{
                             pagecount 
= pagecount + 1;
                         }

                     }

                     
if (start + pagesize >= articletxt.Length) //如果起始位置到查询的范围超出整个内容的长度,那么这一页的终点位置为内容的终点
                     {
                         stops 
= articletxt.Length;
                     }

                     
if (pp == j + 1//如果是当前,那么输出当前页的内容
                     {
                         articletext 
= articletxt.Substring(start, stops - start); //取内容的起始位置到终点位置这段字符串输出
                         returnHash["content"= articletext;
                     }

                     start 
= stat; //将终点位置作为下一页的起始位置
                 }

             }
// pagecount = pagecount - 1;
         }

         
else
         
{
             returnHash[
"content"= n_content;
         }

         
//分页部分(这里就简单多了)
         
//定义分页代码变量
         if (pagecount > 1//当页数大于1的时候我们显示页数
         {
             
if (pp - 1 > 0//显示上一页,方便浏览
             { html = html + "<a href=/"" + linkurl + "&page=" + (pp - 1) + "/">[上一页]</a> "; }
             
else
             
{
                 
if (pp == 1)
                 
{ html = html + "[<font color=#cccccc>上一页</font>] "; }
                 
else
                 
{ html = html + "<a href=/"" + linkurl + "&page=/"" + (1+ "/">[上一页]</a> "; }
             }

             
for (int i = 1; i <= pagecount; i++)
             
{
                 
if (i == pp)   //如果是当前页,加粗显示
                 { html = html + "<b>[" + i + "]</b> "; }
                 
else
                 
{ html = html + "<a href=/"" + linkurl + "&page=" + i + "/">[" + i + "]</a> "; }
             }

             
if (pp + 1 > pagecount)   //显示下一页,方便浏览
             {
                 
if (pp == pagecount)
                 
{ html = html + "[<font color=#cccccc>下一页</font>] "; }
                 
else
                 
{ html = html + "<a href=/"" + linkurl + "&page=" + (pagecount) + "/">[下一页]</a></p>"; }
             }

             
else
             
{
                 html 
= html + "<a href=/"" + linkurl + "&page=" + (pp + 1) + "/">[下一页]</a></p>";
             }

         }

         returnHash[
"pagetxt"= html;
         
return returnHash;
     }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值