asp.net中怎么利用Ajax实现文本文件静态分页,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
服务端部分 ,文本文件分页的类。主要在流中处理。当然我看过网上的用</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" >td> </tr> <tr> <td id="Count1" > </td> </tr> </table>
关于asp.net中怎么利用Ajax实现文本文件静态分页问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。