asp.net 文章內(nèi)容分頁顯示的代碼
更新時間:2009年01月07日 23:18:25 作者:
有種文章分頁的思路是用截取文本字符數(shù)的方法來處理,這個方法當文章內(nèi)容是html代碼的話,分頁后會引起排版問題。
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>
<%
}
}
}
%>
頁數(shù):<%=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)
{
//實際應(yīng)用中,此處的數(shù)據(jù)通過操作數(shù)據(jù)庫來獲取
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;//每頁行數(shù)
ArrayList al = fileOpr.ReadFileContentToArrayList(filepath);//按行讀取文件內(nèi)空到數(shù)組中
int contentLine = al.Count;
pageSum = (int)System.Math.Ceiling((double)contentLine / perPageLine);//總頁數(shù),進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");
}
//關(guān)閉此StreamReader對象
srd.Close();
fs.Dispose();
fs.Close();
return al;
}
注:有種文章分頁的思路是用截取文本字符數(shù)的方法來處理,這個方法當文章內(nèi)容是html代碼的話,分頁后會引起排版問題。
上面代碼的方法思路是按行數(shù)來處理,這個方法個人認為相對更好些。在后臺管理文章內(nèi)容文件時,保證html代碼的良好排版換行即可。
<%@ 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>
<%
}
}
}
%>
頁數(shù):<%=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)
{
//實際應(yīng)用中,此處的數(shù)據(jù)通過操作數(shù)據(jù)庫來獲取
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;//每頁行數(shù)
ArrayList al = fileOpr.ReadFileContentToArrayList(filepath);//按行讀取文件內(nèi)空到數(shù)組中
int contentLine = al.Count;
pageSum = (int)System.Math.Ceiling((double)contentLine / perPageLine);//總頁數(shù),進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");
}
//關(guān)閉此StreamReader對象
srd.Close();
fs.Dispose();
fs.Close();
return al;
}
注:有種文章分頁的思路是用截取文本字符數(shù)的方法來處理,這個方法當文章內(nèi)容是html代碼的話,分頁后會引起排版問題。
上面代碼的方法思路是按行數(shù)來處理,這個方法個人認為相對更好些。在后臺管理文章內(nèi)容文件時,保證html代碼的良好排版換行即可。
您可能感興趣的文章:
- ASPNETPAGER分頁控件的使用方法[圖文]
- Asp.Net中的三種分頁方式總結(jié)
- Asp.net GridView使用大全(分頁實現(xiàn))
- ASP.NET 高性能分頁代碼
- ASP.NET MVC 5使用X.PagedList.Mvc進行分頁教程(PagedList.Mvc)
- Asp.Net數(shù)據(jù)控件引用AspNetPager.dll分頁實現(xiàn)代碼
- asp.net Datalist控件實現(xiàn)分頁功能
- asp.net分頁控件AspNetPager的樣式美化
- AspNetPager分頁控件源代碼(Version 4.2)
- 基于Dapper實現(xiàn)分頁效果 支持篩選、排序、結(jié)果集總數(shù)等
相關(guān)文章
.net全局定時定期執(zhí)行某些操作在Global.asax中具體實現(xiàn)
全局定時定期執(zhí)行某些操作看起來是多么自動化的一個問題不過在.net的Global.asax文件中稍微配置即可實現(xiàn),詳細配置如下,感興趣的朋友可以參考下哈2013-04-04Asp.net Core中如何使用中間件來管理websocket
這篇文章主要給大家介紹了關(guān)于Asp.net Core中如何使用中間件來管理websocket的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09更方便快捷的外部操作數(shù)據(jù)庫的方法(另類玩法)
數(shù)據(jù)庫操作方法很多,各種各樣但是外部操作數(shù)據(jù)庫的方法就會顯得格外陌生了,感興趣的朋友可以詳細了解下本文,或許對你學(xué)習(xí)ado.net有所幫助2013-02-02asp.net中關(guān)于dropdwonlist無法獲得值問題
用dropdwonlist綁定了一個數(shù)據(jù)源做選擇,但是當提交時,用控件屬性無法獲得相應(yīng)的值,打印出來每次都是顯示的第一個值2011-11-11