C# 内容分页

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

/// <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;
    }

发布了20 篇原创文章 · 获赞 5 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章