关于图文长新闻分页的问题,请高手解决!
最近做一个新闻发布模块,里面有些新闻比较长,图文混排,用页面输出的时候长长的一页,浏览起来很不方便。在网上找了些代码,但是总是感觉不能满足要求。用文本编辑器里的分页标记进行分页,有些用户不会用。下面的代码是根据新闻字符计数,然后按<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