網上已經有用asp對文章內容分頁顯示的代碼,我也沒有用時間詳細研究。今天發布了幾篇超長的文章,為了方便網民的瀏覽,才定下心來寫了下面的代碼。因為我們的程序是C#.net編寫的,關于C#如此的例子、資料網上一點也找不到;所以只好從程序結構開始分析,一點程序卻用了半天的時候完成,汗顏!不足之處,請大家指點,有什么更好的方法請告知。
顯示內容部分:
//來源:網人帝國(wren.cn/wrclub.net) //作者:福星 //定義變量 int i,start,stop,t,stat,statt,pp,pagecount,pagesize; //變量初始值 stat=0; statt=0; start=0;//開始查詢的字符串位置,初始為0 stop=0; pagesize=2000;//定義每頁至少顯示字符串數 pagecount=0;
//獲得當前的頁數 pa=Request.Params["page"]; if(pa=="" || pa==null) pa="1"; pp=Convert.ToInt32(pa);
//獲得內容 articletxt=rs["contenttxt"].ToString();
//判斷頁面的內容長度是否大于定義的每頁至少顯示字符串數 if(articletxt.Length>=pagesize)//如果大于字符串數,則我們可以分頁顯示 { t=articletxt.Length/pagesize;//獲得大致的總頁數 //根據目前獲得的頁數循環 for(i=0;i<t;i++) { //如果查詢開始位置到查詢的范圍超出整個內容的長度,那么就不用尋找斷點(分頁點);反之,查找 if(start+pagesize<articletxt.Length) { stat=articletxt.IndexOf("</P>",start+pagesize);//查找</P>分頁點的位置 if(stat<=0)//如果找不到 stat=articletxt.IndexOf("</p>",start+pagesize);//查找</p>分頁點的位置;這里您可以自己設置分頁點的判斷 } if(stat<=0)//如果找不到分頁點,說明不能分頁,也就不需要做其他的勞動了;否則,就進行分頁 articletext=articletxt;//將結果付給要導出的變量 else { stop=stat;//分頁點的位置也就作為這一頁的終點位置 if(start+pagesize>=articletxt.Length)//如果起始位置到查詢的范圍超出整個內容的長度,那么這一頁的終點位置為內容的終點 stop=articletxt.Length; if(pp==i+1)//如果是當前,那么輸出當前頁的內容 articletext=articletxt.Substring(start,stop-start);//取內容的起始位置到終點位置這段字符串輸出 start=stat;//將終點位置作為下一頁的起始位置 pagecount++;//獲得實際頁總數 } } }
分頁部分(這里就簡單多了)
string html;//定義分頁代碼變量 if(pagecount>1)//當頁數大于1的時候我們顯示頁數 { for(i=1;i<=pagecount;i++) { if(i==pp)//如果是當前頁,加粗顯示 html+="<b>["+i+"]</b> "; else html+="<a href=?id="+articleid+"&page="+i+">["+i+"]</a> "; } if(pp+1>pagecount)//顯示下一頁,方便瀏覽 html+="<a href=?id="+articleid+"&page="+(pagecount)+">[下一頁]</a></p>"; else html+="<a href=?id="+articleid+"&page="+(pp+1)+">[下一頁]</a></p>"; }
大家可以加入上面的代碼試一下!有什么問題請到網人論壇發貼,地址:http://bbs.wrclu
|