asp.net+Ajax 文字檔靜態分頁實現代碼

來源:互聯網
上載者:User

服務端部分 ,文字檔分頁的類。主要在流中處理。當然我看過網上的用</br> 關鍵字進行分頁的
個人覺得不是所有時候都能滿足要求,所一自己寫了這個,還是費了點時間,主要在於本人太笨,基礎很差。希望大家個出更好的建議 複製代碼 代碼如下:using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace Txt
{
public class TxtPager
{
public TxtPager()
{ }
public TxtPager(string _txtPath, int _Pagesize)
{
{
this.txtPath = _txtPath;
this.pageSize = _Pagesize;
}
}
string txtPath;//檔案路徑
int pageSize;//每頁文本行數
// int ppt;//
int number;
// int totalPage;
#region
public int TotalPage
{
get {
if (TxtLineCount() % pageSize == 0)
return TxtLineCount() / pageSize;
else
return TxtLineCount()/pageSize + 1; }
}
public int Ppt
{
get { return TxtLineCount(); }
}
public int Number
{
get { return number; }
set { number = value; }
}
#endregion
private int TxtLineCount()
{
StreamReader sr = new StreamReader(this.txtPath);
string line;
int count = 0;
while ((line = sr.ReadLine()) != null)
{
//line += "fuck";
count++;
}
return count;
}
public string ReadTxtToHtml()
{
string line;//存放一行文字
int ptr = 0;//行計數
int ttp = 1;//分頁後的最大頁數
StreamReader sr = new StreamReader(txtPath);
string htmlStr = "";//用於存放Html代碼
htmlStr += "#" + ttp + "</br>";
while ((line = sr.ReadLine()) != null)
{
if (ptr == pageSize)
{
ttp++;
htmlStr += "#" + ttp + "</br>";
ttp++;
htmlStr += "#" + ttp + "</br>";
ptr = 0;
}
htmlStr += line + "</br>";
ptr++;
}
htmlStr += "#" + (ttp + 1) ;
//return htmlStr;
if (number > ttp+1/2)
{
number = ttp;
}
//.................................
string startStr = "#" + (2 * number - 1);//1
string endStr = "#" + (2 * number);//2 1---2
int startNum = htmlStr.IndexOf(startStr);
int endNum = htmlStr.IndexOf(endStr);
int offset = startStr.Length;
return htmlStr.Substring(startNum + offset, endNum - (startNum + offset));
}
}
}

這裡是這個類的使用方法:
這段代碼用來解釋分頁類的使用有一點不直觀,主要是寫的時候我是針對多的檔案分頁的,還好我這裡只需要6個而已;需要多個也可也滿足要求。
呵呵還沒有完善,注釋部分懶得寫,所以沒寫,哎是在是太懶了。註冊這麼長時間的部落格園才寫這麼幾篇爛東西。跟自己的初衷還是想去甚遠的。 複製代碼 代碼如下:public partial class TxtPager : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
int pageSize = 40;
string _path = rtPath(int.Parse(Request.QueryString["txtid"]));
string path = HttpContext.Current.Server.MapPath(_path);
Txt.TxtPager tp = new Txt.TxtPager(path, pageSize);
int _ttpage = tp.TotalPage;
if (Request.RequestType.ToString().ToLower() == "get")
{
Response.Write(_ttpage.ToString());
Response.End();
}
if (Request.RequestType.ToLower() == "post")
{
//string =
//前端判斷 index 是否為數字
string index = Request.QueryString["index"];
tp.Number = int.Parse(index);
string context = tp.ReadTxtToHtml();
Response.Write(context);
Response.End();
}
}
private string rtPath(int i)
{
string[] pathCollection = { "Test.txt" ,"tdays.txt","problem.txt","jion.txt","serve.txt","project.txt","icexplain.txt"};
return "txt/" + pathCollection[i];
}
}

上面這也是為Ajax 的請求做準備的,寫的還是很粗糙的,希望高手莫扔我雞蛋
Ajax 代碼部分 複製代碼 代碼如下:<script type="text/javascript" language="javascript">
var xmlhttp;
var pxmlhttp;
var TotilPage;
var ContectBody;
function GetXmlHttpRequset()
{
var rtxmlHttp;
try
{ rtxmlHttp = new XmlHttpRequset();}
catch(e)
{
try
{
rtxmlHttp = new ActiveXObject("Mxxml2.XMLHTTP");
}
catch(e)
{
try{ rtxmlHttp = new ActiveXObject("Microsoft.XMLHTTP");}
catch(e)
{ alert("您的的瀏覽器不支援Ajax"); }
}
}
return rtxmlHttp;
}
function GetPagerCount()
{
xmlhttp = GetXmlHttpRequset();
var url = "TxtPager.aspx?txtid=0";
try
{
xmlhttp.open("get",url,false);
}
catch(e)
{ return false; }
xmlhttp.onreadystatechange = CountCallBack;
xmlhttp.send(null);
return true;
}
function CountCallBack()
{
if(xmlhttp.readyState == 4)
{
var count = xmlhttp.responseText;
var i = 0;
for(i=0 ; i<count ; i++)
{
var ChildDiv = document.createElement("div");
document.getElementById("Count1").appendChild( ChildDiv);
ChildDiv.innerHTML = i+1;
ChildDiv.setAttribute("id",i);
ChildDiv.setAttribute("onclick","GetHtmlString("+(i+1)+")");
GetHtmlString(1);
}
}
}
function GetHtmlString(i)
{
pxmlhttp = GetXmlHttpRequset();
var Url = "TxtPager.aspx?txtid=0&index="+ i;
pxmlhttp.open("post",Url,false);
pxmlhttp.onreadystatechange = ContextPostBack ;
pxmlhttp.send(null);
}
function ContextPostBack()
{
if(pxmlhttp.readyState == 4)
{
var context = pxmlhttp.responseText;
document.getElementById("article").innerHTML = context;
}
}
</script>

代碼還是很淺顯易懂的,呵呵因為我也不會寫高深的代碼。重要的我們都要動手去實踐。菜鳥們多多努力哦。做完我這個例子級會收穫很多哦。
至少當我還是個初級菜鳥的時候要是有這個例子進步會很快。
下面就是顯示的部分了。給大家一個完完整整的。做人要厚道要負責人 複製代碼 代碼如下:<table width="90%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center">冰激淩製作方法大全</td>
</tr>
<tr>
<td id="article" align="left" style="font-size:12px; height:805px">td>
</tr>
<tr>
<td id="Count1" style="height:auto; text-align:right"> </td>
</tr>
</table>

完成了!!希望會讓來看我代碼的人不會失望。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.