长文章手动分页显示代码

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

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

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