今天又改程序了,要是自己写的程序能满足所有的需求多好啊~嘿嘿。今天改了东西是做个内容分页,上网找了一些资料,有的写的不是很明白,所以自己就自己整理了一个方法出来,对于参考的文章的原地址无从查找,所以就不给出链接了,希望原作者谅解。以下是我自己整理的方法:
/// <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;
}