[求助]关于长文章分页的方法?

weijiawei1130 2010-10-25 02:10:52
我一点思路都没有,还是先去搜索了,没找到!特来求助!
我做了个文档管理的网站,文章的正文是用sqlSERVER text字段存放,用freetextbox进行编辑保存,但是很多文章都是几十页的,都在一页内显示 很臃肿,请问怎么把文章分多页显示?
多条记录会弄上页下页,一个文章的就不会啊....如何拆分@_@

拜托高手们~~
...全文
236 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdnflys 2010-11-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hookyzlr 的回复:]
给你个小例子:

HTML code

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID……
[/Quote]
学习~~
勤奋的阿拉丁 2010-11-03
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 weijiawei1130 的回复:]
难啊 人为分页麻烦 几百页的不现实 自动分页 会破坏表格 郁闷~~~
[/Quote]
这就是为什么人们这么热衷于PDF的原因!
weijiawei1130 2010-11-03
  • 打赏
  • 举报
回复
难啊 人为分页麻烦 几百页的不现实 自动分页 会破坏表格 郁闷~~~
xq1981 2010-10-27
  • 打赏
  • 举报
回复

public void ShowContent(int pi) //显示内容,pi为当前索引页,此为核心代码
{
string showContent = ""; //要显示的字符串
int cl = lblContent.Text.Length; //内容总长度
int ps = 4; //每页内容大小
int pc = cl % ps == 0 ? cl / ps : cl / ps + 1; //总页数
if (pi < pc)
{
showContent += lblContent.Text.Substring(ps * (pi - 1), ps);
}
else
{
showContent += lblContent.Text.Substring(ps * (pi - 1), cl - ps*(pi - 1));
}
this.lblText.Text = showContent;
}
//如果有HTML标签的话,还要用这个方法
public string NoHTML(string Htmlstring) //去除HTML标记
{
string htmlstring= Regex.Replace(Htmlstring, @" <(.[^>]*)>", "", RegexOptions.IgnoreCase);
return htmlstring;
}
古龙老子 2010-10-26
  • 打赏
  • 举报
回复
会截到html标签的
熬夜的构架师 2010-10-26
  • 打赏
  • 举报
回复
后台去数字嘛,规定多少字一页不就是咯
weijiawei1130 2010-10-26
  • 打赏
  • 举报
回复
还有个问题啊~文档中有表格的话 自动分页会破坏表格~~~晕啊
weijiawei1130 2010-10-26
  • 打赏
  • 举报
回复
手动插入分页 是不现实 WORD拷贝过去的文章 用户不会去对几百页的做修改

继续求教~~
hahanan1987 2010-10-26
  • 打赏
  • 举报
回复
关注下 貌似都是插分页符的
ruolins 2010-10-25
  • 打赏
  • 举报
回复

/// <summary>
/// 当文章较长的时候自行分页
/// </summary>
/// <param name="p_strContent"></param>
/// <returns></returns>
public string OutputBySize(string p_strContent)//分页函数
{
string m_strRet = "";
int m_intPageSize = 3000;//文章每页大小

int m_intTotalPage = 0;
int m_intArticlelength = Common.NoHTML(p_strContent).Length;//文章长度
if (m_intPageSize < m_intArticlelength)
{//如果每页大小大于文章长度时就不用分页了
if (m_intArticlelength % m_intPageSize == 0)
{//set total pages count
m_intTotalPage = m_intArticlelength / m_intPageSize;
}
else
{//if the totalsize
m_intTotalPage = m_intArticlelength / m_intPageSize + 1;
}
if (Request.QueryString["pages"] != null)
{//set Current page number
try
{//处理不正常的地址栏的值
// m_intCurrentPage = Convert.ToInt32(Request.QueryString["pages"]);
if (m_intCurrentPage > m_intTotalPage)

m_intCurrentPage = m_intTotalPage;
}

catch
{
Response.Redirect("Error.aspx");
}
}
//set the page content 设置获取当前页的大小
if (m_intCurrentPage < m_intTotalPage)
{
m_intPageSize = m_intCurrentPage < m_intTotalPage ? m_intPageSize : (m_intArticlelength - m_intPageSize * (m_intCurrentPage - 1));
m_strRet += p_strContent.Substring(m_intPageSize * (m_intCurrentPage - 1), m_intPageSize);
}
else if (m_intCurrentPage == m_intTotalPage)
{
int mm_intPageSize = m_intArticlelength - m_intPageSize * (m_intCurrentPage - 1);
m_strRet += p_strContent.Substring(m_intArticlelength - mm_intPageSize);
}

string m_strPageInfo = "<p></p>";
for (int i = 1; i <= m_intTotalPage; i++)
{
if (i == m_intCurrentPage)
m_strPageInfo += "第" + i + "页 | ";
else
m_strPageInfo += "<a href=gynecologyView.aspx?gid="+Request.QueryString["gid"]+"&pages=" + i + ".html>" + i + "</a>|";
}
//输出显示各个页码
this.labPageNumber.Text = m_strPageInfo;

}
else
{
m_strRet += p_strContent;
}
return m_strRet;
}

if (!IsPostBack)
{
GetRight();
}
int index=0;
if (string.IsNullOrEmpty(Request.QueryString["gid"]))
{
Response.Redirect("Error.aspx");
}
else
{
try
{

string pages = Request.QueryString["pages"]; //页数
if (!string.IsNullOrEmpty(pages))
{
index = pages.IndexOf(".");
}
if (index > 0)
{
string page = pages.Substring(0, index);
m_intCurrentPage = Convert.ToInt32(page);
}
int gid = Convert.ToInt32(Request.QueryString["gid"]);
string sql = "select column_title,column_detail from columns where column_id=" + gid;
dt = Common.GetTable(sql);
content = OutputBySize(dt.Rows[0]["column_detail"].ToString());
}
catch (Exception)
{
Response.Redirect("Error.aspx");
}
}


<%=content%>
StillMiss 2010-10-25
  • 打赏
  • 举报
回复
学习一下!
zjx198934 2010-10-25
  • 打赏
  • 举报
回复
如果文章中有HTML并且要求最终显示的话! 插入分页符的时候就要注意标签的配对!
hql5202004 2010-10-25
  • 打赏
  • 举报
回复
文章录入的时候 , 插入 分页符号{$Page}

可以在你的录入框上定做一个插入分页按钮,一点就插入 分页符号{$Page} 不是很方便。。。

显示文章的时候 : 进行分隔处理。
DreamSea530 2010-10-25
  • 打赏
  • 举报
回复
手动插入有个弊端就是你文章的内容是Copy的,几千万的字不可能一个个的Insert [pager] mark吧?我以前做具体的思路是:将带有HTML标签的内容分离出来,根据每页显示字数获取需显示总页数,在获取每页显示的具体内容(包括标签的结尾)!
因现在是在网吧,所以无法发送Code,见谅!
wuyq11 2010-10-25
  • 打赏
  • 举报
回复
最简单的方法录入文章的时候插入一个分页符
显示的时候用分页符隔开分页显示
这是一对多的设计.
在添加时,想分多少页,就添加多少次.
或添加文章时,通过标识符分页或按照分页添加文章内容
或public string NoHTML(string Htmlstring) //去除HTML标记
{
Htmlstring = Regex.Replace(Htmlstring, @" <(.[^>]*)>", "", RegexOptions.IgnoreCase);
}
在分页
zell419 2010-10-25
  • 打赏
  • 举报
回复
${page}
手动插入 。
Dylan-Wang 2010-10-25
  • 打赏
  • 举报
回复
文章在录入时 手动插入分页符号

读取时 遇到分页符 就进行截取分页

一般都是这个方法
hookyzlr 2010-10-25
  • 打赏
  • 举报
回复
补充:
代码中的3就是每页的数量,自己定义
hookyzlr 2010-10-25
  • 打赏
  • 举报
回复
给你个小例子:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label3" runat="server" Text="1234" Visible="false"></asp:Label>
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>
<asp:Button ID="Button2" runat="server" Text="下一页" onclick="Button2_Click" />
<asp:Label ID="Label2" runat="server" Text="1" ></asp:Label>
<asp:Label ID="Label4" runat="server" Text="0" ></asp:Label>
</div>
</form>
</body>
</html>

后台:

private int count = 1;

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Label1.Text = Label3.Text.Substring(0, 3);
Label4.Text = Math.Ceiling(Label3.Text.Length / 3.0).ToString();
}
}

protected void Button2_Click(object sender, EventArgs e)
{
count = Int32.Parse(Label2.Text) + 1;

if (count >= Int32.Parse(Label4.Text))
{
Label1.Text = Label3.Text.Substring(count * 3 - 3);
}
else
{
Label1.Text = Label3.Text.Substring(count * 3 - 3, 3);
}

Label2.Text = count.ToString();
}

未作异常处理。自己做一下异常处理就OK
zhangsuyunpk521 2010-10-25
  • 打赏
  • 举报
回复
暂时我也就同楼上一样,只知道在插入数据的时候手动的插入分页符额··
加载更多回复(3)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧