asp.net 文章内容分页显示的代码 |
时间:2015-01-29 来源:互联网 作者:佚名 |
|
aspx: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ArticlePage.aspx.cs" Inherits="ArticlePage" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>文章分页</title> </head> <body> <form id="form1" runat="server"> <div> <table style="text-align: center;" border="0" cellpadding="0" cellspacing="0"> <tr> <td align="left" style="width: 400px; background-color: #ffff99;"> <table style="width: 100%"> <tr> <td style="width: 100%; border-top: #ff3300 2px dotted; border-left-width: 2px; border-left-color: #ff3300; border-bottom: #ff3300 2px dotted; border-right-width: 2px; border-right-color: #ff3300; height: 25px; text-align: center;"> <%=ArticleTitle %></td> </tr> </table> </td> </tr> <tr> <td style="width: 400px; height: 100%;" align="left"> <p style="background-color: oldlace"> <%=Article %> </p> </td> </tr> <tr> <td style="width: 400px; background-color: #ffff99; height: 48px;"> <table style="width: 100%"> <tr> <td style="width: 100%; border-top: #ff3300 2px dotted; border-left-width: 2px; border-left-color: #ff3300; border-bottom: #ff3300 2px dotted; border-right-width: 2px; border-right-color: #ff3300;" align="left"> <p> <asp:HyperLink ID="firstLink" runat="server" Visible="False">首页</asp:HyperLink> <asp:HyperLink ID="preLink" runat="server" Visible="False">上一页</asp:HyperLink> <asp:HyperLink ID="nextLink" runat="server" Visible="False">下一页</asp:HyperLink> <asp:HyperLink ID="lastLink" runat="server" Visible="False">末页</asp:HyperLink> </p> <p> <% if(pageSum>1) { for (int i = 1; i <= pageSum; i++) { if (pageNo == i) { %> <%=i%> <% } else { %> <a href="?page=<%=i %>"><%=i%></a> <% } } } %> 页数:<%=pageNo %>/<%=pageSum %> </p></td> </tr> </table> </td> </tr> </table> <br /> </div> </form> </body> </html> //========================== aspx.cs: (C#) using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class ArticlePage : System.Web.UI.Page { protected string Article = "", ArticleTitle=""; protected int pageNo = 1, pageSum = 1; protected void Page_Load(object sender, EventArgs e) { //实际应用中,此处的数据通过操作数据库来获取 ArticleTitle = "文章标题"; string filename = "20091795819.html"; string mPath = Server.MapPath("h3g/"); string filepath = mPath + filename; ShowArticle(filepath); } protected void ShowArticle(string filepath) { string page = Request.Params["page"]; int perPageLine = 5;//每页行数 ArrayList al = fileOpr.ReadFileContentToArrayList(filepath);//按行读取文件内空到数组中 int contentLine = al.Count; pageSum = (int)System.Math.Ceiling((double)contentLine / perPageLine);//总页数,进1取整 if (page == null || page == "" || page == "1") { pageNo = 1; if (contentLine <= perPageLine) { for (int i = 0; i < contentLine; i++) { Article += al[i].ToString(); } } else { for (int i = 0; i < perPageLine; i++) { Article += al[i].ToString(); } firstLink.Visible = false; preLink.Visible = false; nextLink.NavigateUrl = "?page=" + (pageNo + 1); nextLink.Visible = true; lastLink.NavigateUrl = "?page=" + pageSum; lastLink.Visible = true; } } else { pageNo = int.Parse(page); if (pageNo < pageSum) { for (int i = perPageLine * (pageNo - 1); i < perPageLine * pageNo; i++) { Article += al[i].ToString(); } firstLink.NavigateUrl = "?page=1"; firstLink.Visible = true; preLink.NavigateUrl = "?page=" + (pageNo - 1); preLink.Visible = true; nextLink.NavigateUrl = "?page=" + (pageNo + 1); nextLink.Visible = true; lastLink.NavigateUrl = "?page=" + pageSum; lastLink.Visible = true; } else { for (int i = contentLine - perPageLine * (pageSum - 1); i < contentLine; i++) { Article += al[i].ToString(); } firstLink.NavigateUrl = "?page=1"; firstLink.Visible = true; preLink.NavigateUrl = "?page=" + (pageNo - 1); preLink.Visible = true; nextLink.Visible = false; lastLink.Visible = false; } } } } 重用类fileOpr.cs: fileOpr.ReadFileContentToArrayList(filepath);中的方法: public static ArrayList ReadFileContentToArrayList(string filepath) { ArrayList al = new ArrayList(); FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read); StreamReader srd = new StreamReader(fs, Encoding.Default); //使用StreamReader类来读取文件 srd.BaseStream.Seek(0, SeekOrigin.Begin); string strLine = srd.ReadLine(); while (strLine != null) { strLine = srd.ReadLine(); al.Add(strLine + "\n"); } //关闭此StreamReader对象 srd.Close(); fs.Dispose(); fs.Close(); return al; } 注:有种文章分页的思路是用截取文本字符数的方法来处理,这个方法当文章内容是html代码的话,分页后会引起排版问题。 上面代码的方法思路是按行数来处理,这个方法个人认为相对更好些。在后台管理文章内容文件时,保证html代码的良好排版换行即可。 |
|
|
|