欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

asp.net+Ajax 文本文件静态分页实现代码

程序员文章站 2022-06-24 16:28:42
服务端部分 ,文本文件分页的类。主要在流中处理。当然我看过网上的用
关键字进行分页的 个人觉得不是所有时候都能满足要求,所一自己写了这个,还是费了点时...
服务端部分 ,文本文件分页的类。主要在流中处理。当然我看过网上的用</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>

完成了!!希望会让来看我代码的人不会失望。