今天又改程序了,要是自己寫的程序能滿足所有的需求多好啊~嘿嘿。今天改了東西是做個內容分頁,上網找了一些資料,有的寫的不是很明白,所以自己就自己整理了一個方法出來,對於參考的文章的原地址無從查找,所以就不給出鏈接了,希望原作者諒解。以下是我自己整理的方法:
/// <summary>
/// 內容分頁函數 add by think.huang at 2010-8-3
/// </summary>
/// <param name="content">內容</param>
/// <param name="ctextSize">截取的長度</param>
/// <param name="lblPager">用於顯示分頁的控件</param>
/// <param name="curtPage">當前頁</param>
///<param name="praName">參數名稱</param>
///<param name="Id">參數值</param>
/// <returns></returns>
public static string ContentPager(string content, int ctextSize, Label lblPager, int curtPage,string Id,string praName)
{
//要返回的內容
string strCon = "";
//段落開始的位置 初始爲0
int startIndex = 0;
//字段截斷的位置
int cutIndex = 0;
//頁數
int pageCount = 0;
//如果總的長度大於每頁顯示的數目才分頁
if (content.Length > ctextSize)
{
//計算大概多少頁
int count = content.Length / ctextSize;
//根據頁數來進行循環計算
for (int i = 0; i < count; i++)
{
//如果截取的位置小於內容總長度
if (ctextSize + cutIndex < content.Length)
{
//在指定長度的後一個</p>標籤進行截斷
cutIndex = content.IndexOf("</p>", startIndex + ctextSize);
if (cutIndex <= 0)
{
//大寫
cutIndex = content.IndexOf("</P>", startIndex + ctextSize);
}
//計算分頁的數目
pageCount++;
}
else
{
cutIndex = content.Length;
}
//獲取截取出來的字段
if (curtPage == i + 1)
{
strCon = content.Substring(startIndex, cutIndex - startIndex);
}
//將此次截取的位置作爲下次截取的開始位置
startIndex = cutIndex;
}
}
else
{
lblPager.Text = "";
return content;
}
//顯示分頁
StringBuilder pager = new StringBuilder();//定義分頁代碼變量
if (pageCount > 1)//當頁數大於1的時候我們顯示頁數
{
for (int i = 1; i <= pageCount; i++)
{
if (i == curtPage)//如果是當前頁,加粗顯示
pager.Append("<b>[" + i + "]</b> ");
else
pager.Append("<a href=?"+praName+"=" + Id + "&page=" + i + ">[" + i + "]</a> ");
}
if (curtPage + 1 > pageCount)//顯示下一頁,方便瀏覽
{
pager.Append("<a href=?" + praName + "=" + Id + "&page=" + (pageCount) + ">[下一頁]</a></p>");
}
else
{
pager.Append("<a href=?" + praName + "=" + Id + "&page=" + (curtPage + 1) + ">[下一頁]</a></p>");
}
}
lblPager.Text = pager.ToString();
return strCon;
}