asp.net 文章内容分页显示的代码

  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代码的良好排版换行即可。