当前位置: 首页 > news >正文

长文章手动分页显示代码

  项目过程中遇到一篇文章篇幅很长,下拉查看非常不便,

此方法实现长文章的手动分页,在后台添加内容过程中,我以“|”作为分页的标志,

1、webConfig中的设置。

<appSettings>
    <add key="PagerSplit" value="|"/>
</appSettings>

当然你也可以设置其他字符作为分页标志。

2、页面上的代码。

 

<table width="95%" align="center" border="0" class="tablecol" >
  
    <tr  bgcolor="">
        <td align="left"><asp:Label ID="content" runat="server"></asp:Label></td>
    </tr>
 </table>
      <asp:label id="currentpage" runat="server" CssClass="gray">当前页</asp:label> 
                                        <asp:label id="totalpage" runat="server" CssClass="gray"></asp:label> 
             <asp:hyperlink id="lnkfist" runat="server" CssClass="gray">首页</asp:hyperlink>|
             <asp:hyperlink id="lnkprev" runat="server" CssClass="gray">前页</asp:hyperlink>|
             <asp:hyperlink id="lnknext" runat="server" CssClass="gray">下页</asp:hyperlink>|
             <asp:hyperlink id="lnklast" runat="server" CssClass="gray">尾页</asp:hyperlink>

3、后台代码。

  首先,在后台定义一个私有类型的公共变量,在Page_Load方法的外面

private ContentPager pager;

Page_Load方法里面的代码

文章标题、发文时间、作者、来源之类的信息要单独绑定,不和内容信息一起,因为它们在翻页后是不变的。下面列出绑定代码:

 1 DataSet ds = sadsdd.ExcuteToDataSet("查询语句");
 2                     dlContent.DataSource = ds;
 3                     dlContent.DataBind();
 4                     DataRow drow;
 5                     drow = ds.Tables["mytable"].Rows[0];
 6                     string cont = drow["news_content"].ToString();//此部分可以把内容中的HTML代码转换一下,我也省略了
 7                     //文章分页,关键部分
 8                     pager = new ContentPager();
 9                     pager.Lnknext = this.lnknext;
10                     pager.Lnkprev = this.lnkprev;
11                     pager.Lnklast = this.lnklast;
12                     pager.Lnkfist = this.lnkfist;
13                     pager.Pagenum = this.currentpage;
14                     pager.Pagecount = this.totalpage;
15                     pager.DisplayContent = this.content;
16                     string query = "&id=" + Request.QueryString["id"].ToString();
17                     pager.datapager(cont, query);

其中的dlContent为文章的标题以及发文时间,作者之类的信息。

本分页代码中需要用到的类

  1 public class ContentPager:System.Web.UI.Page
  2     {
  3         private System.Web.UI.WebControls.HyperLink lnknext;
  4         private System.Web.UI.WebControls.HyperLink lnkprev;
  5         private System.Web.UI.WebControls.HyperLink lnkfist;
  6         private System.Web.UI.WebControls.HyperLink lnklast;
  7         private System.Web.UI.WebControls.Label pagenum;
  8         private System.Web.UI.WebControls.Label pagecount;
  9         private System.Web.UI.WebControls.Label displaycontent;
 10         public ContentPager()
 11         {
 12             //
 13             // TODO: 在此处添加构造函数逻辑
 14             //
 15         }
 16         public void datapager(string content, string query)
 17         {
 18             string PagerSplit = System.Configuration.ConfigurationManager.AppSettings["PagerSplit"];//从web.config中获取分页符,当然这里可以自己定义,为了方便还是放到配置文件或者数据库中。
 19             string[] contentArray = StringSplit(content, PagerSplit);//这里是一个方法,摘自网上
 20             int PageCount = contentArray.Length;
 21             this.pagecount.Text = "共<b><font color='#FF0000'>" + PageCount.ToString() + "</font></b>页";
 22             int CurPage;
 23             //确定当前页数
 24             if (System.Web.HttpContext.Current.Request.Params["Page"] != null)
 25             {
 26                 CurPage = Convert.ToInt32(System.Web.HttpContext.Current.Request.Params["Page"]);
 27             }
 28             else
 29             {
 30                 CurPage = 1;
 31             }
 32             if (CurPage < 1) CurPage = 1;
 33             if (Convert.ToInt32(System.Web.HttpContext.Current.Request.Params["Page"]) > PageCount)
 34             {
 35                 CurPage = PageCount;
 36             }
 37             //显示当前页数
 38             this.pagenum.Text = "第<b><font color='#FF0000'>" + CurPage.ToString() + "</font></b>页";
 39             //下一页
 40             if (CurPage != PageCount)
 41             {
 42                 lnknext.NavigateUrl = System.Web.HttpContext.Current.Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage + 1) + query;
 43             }
 44             //上一页
 45             if (CurPage > 1)
 46             {
 47                 lnkprev.NavigateUrl = System.Web.HttpContext.Current.Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage - 1) + query;
 48             }
 49             //第一页
 50             if (CurPage != 1)
 51             {
 52                 lnkfist.NavigateUrl = System.Web.HttpContext.Current.Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(1) + query;
 53             }
 54             //最后一页
 55             if (CurPage != PageCount)
 56             {
 57                 lnklast.NavigateUrl = System.Web.HttpContext.Current.Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(PageCount) + query;
 58             }
 59             displaycontent.Text = contentArray[CurPage - 1].ToString();
 60         }
 61  
 62         #region  System.Web.UI.WebControls.HyperLink DisplayContent
 63         public System.Web.UI.WebControls.Label DisplayContent
 64         {
 65             get
 66             {
 67                 return this.DisplayContent;
 68             }
 69             set
 70             {
 71                 this.displaycontent = value;
 72             }
 73         }
 74         #endregion
 75         #region  System.Web.UI.WebControls.HyperLink Lnkprev
 76         public System.Web.UI.WebControls.HyperLink Lnkprev
 77         {
 78             get
 79             {
 80                 return this.lnkprev;
 81             }
 82             set
 83             {
 84                 this.lnkprev = value;
 85             }
 86         }
 87         #endregion
 88         #region System.Web.UI.WebControls.HyperLink Lnknext
 89         public System.Web.UI.WebControls.HyperLink Lnknext
 90         {
 91             get
 92             {
 93                 return this.lnknext;
 94             }
 95             set
 96             {
 97                 this.lnknext = value;
 98             }
 99         }
100         #endregion
101         #region  System.Web.UI.WebControls.HyperLink Lnkfist
102         public System.Web.UI.WebControls.HyperLink Lnkfist
103         {
104             get
105             {
106                 return this.lnkfist;
107             }
108             set
109             {
110                 this.lnkfist = value;
111             }
112         }
113         #endregion
114         #region  System.Web.UI.WebControls.HyperLink Lnklast
115         public System.Web.UI.WebControls.HyperLink Lnklast
116         {
117             get
118             {
119                 return this.lnklast;
120             }
121             set
122             {
123                 this.lnklast = value;
124             }
125         }
126         #endregion
127         #region  System.Web.UI.WebControls.Label Pagenum
128         public System.Web.UI.WebControls.Label Pagenum
129         {
130             get
131             {
132                 return this.pagenum;
133             }
134             set
135             {
136                 this.pagenum = value;
137             }
138         }
139         #endregion
140         #region System.Web.UI.WebControls.Label Pagecount
141         public System.Web.UI.WebControls.Label Pagecount
142         {
143             get
144             {
145                 return this.pagecount;
146             }
147             set
148             {
149                 this.pagecount = value;
150             }
151         }
152         #endregion
153         #region 将字符串分割成数组
154         /// <summary>
155         /// 将字符串分割成数组
156         /// </summary>
157         /// <param name="strSource"></param>
158         /// <param name="strSplit"></param>
159         /// <returns></returns>
160         public string[] StringSplit(string strSource, string strSplit)
161         {
162             string[] strtmp = new string[1];
163             int index = strSource.IndexOf(strSplit, 0);
164             if (index < 0)
165             {
166                 strtmp[0] = strSource;
167                 return strtmp;
168             }
169             else
170             {
171                 strtmp[0] = strSource.Substring(0, index);
172                 return StringSplit(strSource.Substring(index + strSplit.Length), strSplit, strtmp);
173             }
174         }
175         #endregion
176         #region 采用递归将字符串分割成数组
177         /// <summary>
178         /// 采用递归将字符串分割成数组
179         /// </summary>
180         /// <param name="strSource"></param>
181         /// <param name="strSplit"></param>
182         /// <param name="attachArray"></param>
183         /// <returns></returns>
184         private string[] StringSplit(string strSource, string strSplit, string[] attachArray)
185         {
186             string[] strtmp = new string[attachArray.Length + 1];
187             attachArray.CopyTo(strtmp, 0);
188             int index = strSource.IndexOf(strSplit, 0);
189             if (index < 0)
190             {
191                 strtmp[attachArray.Length] = strSource;
192                 return strtmp;
193             }
194             else
195             {
196                 strtmp[attachArray.Length] = strSource.Substring(0, index);
197                 return StringSplit(strSource.Substring(index + strSplit.Length), strSplit, strtmp);
198             }
199         }
200         #endregion
201     }

 

转载于:https://www.cnblogs.com/Chaser-Eagle/p/3684738.html

相关文章:

  • 【高德地图API】从零开始学高德JS API(一)地图展现——仙剑地图,麻点图,街景,室内图...
  • MQ:Introducing Advanced Messaging
  • Git详解之三 Git分支(第二部分)
  • [转]oracle 同义词 synonym
  • 编写一个简单的Jquery插件
  • XSS零碎指南
  • 自定义标签例子
  • javaBean与map类型相互转换
  • mysql错误代码和消息对照表--转载
  • Varnish调优手记
  • IOS文件操作
  • 本版本延续MVC中的统一验证机制~续的这篇文章,本篇主要是对验证基类的扩展和改善(转)...
  • linux驱动编译常见错误记录
  • IT项目中存储设备的选型
  • 使用ASP.Net WebAPI构建REST服务(五)——客户端
  • @jsonView过滤属性
  • [NodeJS] 关于Buffer
  • Debian下无root权限使用Python访问Oracle
  • IDEA 插件开发入门教程
  • JavaScript的使用你知道几种?(上)
  • js ES6 求数组的交集,并集,还有差集
  • leetcode讲解--894. All Possible Full Binary Trees
  • PAT A1050
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 测试开发系类之接口自动化测试
  • - 概述 - 《设计模式(极简c++版)》
  • 诡异!React stopPropagation失灵
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 如何合理的规划jvm性能调优
  • 使用agvtool更改app version/build
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • #Spring-boot高级
  • $(selector).each()和$.each()的区别
  • (06)Hive——正则表达式
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (42)STM32——LCD显示屏实验笔记
  • (附源码)计算机毕业设计ssm电影分享网站
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • .apk文件,IIS不支持下载解决
  • .equals()到底是什么意思?
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • @angular/cli项目构建--http(2)
  • @EnableAsync和@Async开始异步任务支持
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • @RunWith注解作用
  • [ajaxupload] - 上传文件同时附件参数值
  • [Android] Upload package to device fails #2720
  • [C/C++]数据结构 堆的详解
  • [C++11 多线程同步] --- 条件变量的那些坑【条件变量信号丢失和条件变量虚假唤醒(spurious wakeup)】