当前位置:编程学习 > C#/ASP.NET >>

关于图文长新闻分页的问题,请高手解决!

   最近做一个新闻发布模块,里面有些新闻比较长,图文混排,用页面输出的时候长长的一页,浏览起来很不方便。在网上找了些代码,但是总是感觉不能满足要求。
    用文本编辑器里的分页标记进行分页,有些用户不会用。下面的代码是根据新闻字符计数,然后按<p></p>标记进行分页。
    private string SetNewMainPage(string newMainText, int newPageId, int id)
    //新闻分页的方法,newMainText是新闻正文字符串,newPageId表示当前为该新闻的哪一页,id表示新闻的id号。
    {
            string strContent = newMainText;
            ArrayList min = new ArrayList();
            string[] strNew = new string[10];
            int index = 0;
            while (!string.IsNullOrEmpty(strContent))
            {
                if (strContent.Length <= 1800 || index >= 8) //为了防止新闻最后一页的过短也防止新闻分页过多,所以在此判断一下。
                {
                    //Response.Write(index); return null;
                    strNew[index] = strContent;
                    break;
                }
                else
                {
                    strNew[index] = strContent.Substring(0, strContent.IndexOf("<p", 1000));
                    strContent = strContent.Remove(0, strContent.IndexOf("<p", 1000));
                    index++;
                }
            }
            //下面的是为了前台显示新闻页面导航按钮能够居中,将其放到一个表格里。
            //增加包围新闻页面链接的层
            Table hrefDiv = new Table();
            TableRow row = new TableRow();
            TableCell cell = new TableCell();
            hrefDiv.Controls.Add(row);
            row.Controls.Add(cell);
            hrefDiv.Attributes.Add("class", "hrefDiv");
            NewPagePanel.Controls.Add(hrefDiv);

            for (int i = 0; i < strNew.Length; i++)
            {
                if (strNew[i] != null)
                {
                    HyperLink HyperLink1 = new HyperLink();
                    HyperLink1.ID = "HyperLink" + i;
                    HyperLink1.Font.Size = new FontUnit("14px");
                    HyperLink1.NavigateUrl = "DisplayNews.aspx?ID=" + id + "&PageID=" + (i + 1);
                    HyperLink1.Text = " 第" + (i + 1).ToString() + "页" + " ";
                    HyperLink1.Attributes.Add("class", "newHref");
                    if (newPageId == (i + 1))
                    {
                        HyperLink1.Attributes.Add("style", "background-color:#cc0000;color:#fff;border:2px #cc0000 solid;");
                    }
                    cell.Controls.Add(HyperLink1);
                }
                if (strNew[i] == null)
                {
                    min.Add(i);
                }
            }
            //增加clear层,为了兼容css增加一个<div style="clear:both"/>层
            Panel clearDiv = new Panel();
            clearDiv.Attributes.Add("class", "clear");
            cell.Controls.Add(clearDiv);
            //防止用户通过更改地址栏而导航到本不存在的新闻页面
            if (newPageId >= (int.Parse(min[0].ToString()) + 1))
            {
                Response.Write("<script>alert('您访问的页面不存在');window.close();</script>");
                Response.End();
                return null;
            }
            if (int.Parse(min[0].ToString()) <= 1)
            {
                NewPagePanel.Visible = false;
            }
            return strNew[newPageId - 1].ToString();
}

    但是很多的时候发布的新闻是从网页或者是word里粘贴过来,那么就不会有<p></p>标记,而大多是<br/>标记,这样这些代码就不能进行处理。新闻内容里的段落标记既可能有<p>又可能<br/>标记,
请问各位有没有什么好的方法解决新闻分页的问题?谢谢! --------------------编程问答-------------------- 自己顶一下! --------------------编程问答--------------------
如果你是直接读取,不是生成静态网页,那只能判断后分页。 --------------------编程问答-------------------- 没有生成静态网页,只是对文本编辑器里插入的文字、图像内容进行分页 --------------------编程问答-------------------- 有些文本编辑器可以插入分页符,fck --------------------编程问答-------------------- 还没得到答案,自己顶一下 --------------------编程问答-------------------- 既然知道有<br/>,那就增加按照这个标签分页即可。

不过说实话碰到不分段的还是傻,还有不喜欢用标点的……
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,