编 辑 新 闻
新闻类型:
编程天地
编程天地
摄影天地
海贝官方
文学
电脑技术
创业天地
旅游天地
健康生活
游戏动漫
法律法规
商品欣赏
汽车世界
净化工程
asp.net
JQ与JS
APP
asp.net
系统
数据库
UI
JAVA
新闻主题:
 
搜索
 
前台
商品编号:
发 表 人:
关键字:
用空格隔开
新闻内容:
(小于1200字时 <br 分页)
<p><a href="https://www.cnblogs.com/fdggg/articles/2956400.html" _src="https://www.cnblogs.com/fdggg/articles/2956400.html">https://www.cnblogs.com/fdggg/articles/2956400.html</a> <br/></p><p><br/></p><p>前段时间遇到的问题,最后解决了,现在把代码共享,代码没有经过整理,有点乱,不过还是有思路的。</p><p>首先:分页是靠检索<p>标签实现的,所以后台发布新闻的时候最好用<p>标签分段。</p><p>其次:应该考虑到分页时不能截断html标签,否则,页面可能变的惨不忍睹,所以,程序要找到</p>标签,再在它后面分页。</p><p>最后:还要想到新闻的最后一页不能内容太少,比如用户辛苦点击了一个按钮,结果显示了一行新闻,是不是很搞笑,所以,要时刻判断新闻的长度。而且要注意新闻的分页数,不应太多,我这里设置的是最多9页。</p><p>以下代码是根据1000个字符分一页,基本思路是,程序检索到1000个字符处,然后从这开始寻找离得最近的<p>标签,找到之后在其 前面分页。同时还要判断剩余的没有分页的字符数,我设置的是如果剩余字符数少于1800就不需要在分页了,防止最后一页内容过少。</p><p>private void BindNewContent() //获取新闻的方法<br/> {<br/> int id = Convert.ToInt32(Request.QueryString["id"]); //获取新闻id<br/> int newPageId=Convert.ToInt32(Request.QueryString["newPageId"]); //获取现在显示的是该新闻哪页<br/> DBClass db = new DBClass();<br/> string SelectStr =<br/> "select * from new where newId=@id";<br/> SqlCommand com = db.GetCommandStr(SelectStr);<br/> com.Parameters.Add("@id", SqlDbType.Int).Value = id;<br/> SqlDataReader sdr = db.ExecDataReader(com);<br/> if (sdr.Read())<br/> {<br/> //绑定新闻正文,并分页。<br/> string newMainText = sdr["newMainText"].ToString();<br/> newMainText = SetNewMainPage(newMainText, newPageId, id); //这里通过SetNewMainPage给新闻分页</p><p> TitleLabel.Text = sdr["newTitle"].ToString();<br/> Page.Header.Title = "【" + sdr["newTitle"].ToString() + "】";<br/> SourceLabel.Text = sdr["newSource"].ToString();<br/> TimeLabel.Text = sdr["newTime"].ToString();<br/> SummaryLabel.Text = sdr["newSummary"].ToString();<br/> ContentLabel.Text = newMainText;<br/> //ContentLabel.Text = sdr["newMainText"].ToString();<br/> EditorLabel.Text ="责任编辑:"+ sdr["newEditor"].ToString();<br/> }<br/> else<br/> {<br/> Response.Write("<script>alert('您访问的页面不存在');window.close();</script>");<br/> Response.End();<br/> return;<br/> }<br/> sdr.Close();<br/> }</p><p> private string SetNewMainPage(string newMainText, int newPageId,int id) //新闻分页的方法,newMainText是新闻正文字符串,newPageId表示当前为该新闻的哪一页,id表示新闻的id号。<br/> {<br/> string strContent = newMainText;<br/> ArrayList min =new ArrayList();<br/> string[] strNew = new string[10];<br/> int index = 0;<br/> while(!string.IsNullOrEmpty(strContent))<br/> {<br/> if(strContent.Length<=1800||index>=8) //为了防止新闻最后一页的过短也防止新闻分页过多,所以在此判断一下。<br/> {<br/> //Response.Write(index); return null;<br/> strNew[index]=strContent;<br/> break;<br/> }<br/> else<br/> {<br/> strNew[index]=strContent.Substring(0,strContent.IndexOf("<p",1000));<br/> strContent=strContent.Remove(0,strContent.IndexOf("<p",1000));<br/> index++;<br/> }<br/> }<br/> //下面的是为了前台显示新闻页面导航按钮能够居中,将其放到一个表格里。<br/> //增加包围新闻页面链接的层<br/> Table hrefDiv = new Table();<br/> TableRow row = new TableRow();<br/> TableCell cell = new TableCell();<br/> hrefDiv.Controls.Add(row);<br/> row.Controls.Add(cell);<br/> hrefDiv.Attributes.Add("class", "hrefDiv");<br/> NewPagePanel.Controls.Add(hrefDiv);</p><p> for (int i = 0; i < strNew.Length; i++)<br/> {<br/> if (strNew[i] != null)<br/> {<br/> HyperLink HyperLink1 = new HyperLink();<br/> HyperLink1.ID = "HyperLink" + i;<br/> HyperLink1.NavigateUrl = "~/DetailedNew.aspx?id=" + id + "&newPageId=" + (i + 1);<br/> HyperLink1.Text = (i + 1).ToString();<br/> HyperLink1.Attributes.Add("class", "newHref");<br/> if (newPageId == (i + 1))<br/> {<br/> HyperLink1.Attributes.Add("style", "background-color:#cc0000;color:#fff;border:2px #cc0000 solid;");<br/> }<br/> cell.Controls.Add(HyperLink1);<br/> }<br/> if (strNew[i] == null)<br/> {<br/> min.Add(i);<br/> }<br/> }<br/> //增加clear层,为了兼容css增加一个<div style="clear:both"/>层<br/> Panel clearDiv = new Panel();<br/> clearDiv.Attributes.Add("class", "clear");<br/> cell.Controls.Add(clearDiv);<br/> //防止用户通过更改地址栏而导航到本不存在的新闻页面<br/> if (newPageId >= (int.Parse(min[0].ToString()) + 1))<br/> {<br/> Response.Write("<script>alert('您访问的页面不存在');window.close();</script>");<br/> Response.End();<br/> return null;<br/> }<br/> if (int.Parse(min[0].ToString()) <= 1)<br/> {<br/> NewPagePanel.Visible = false;<br/> }<br/> return strNew[newPageId - 1].ToString();</p><p><br/> }</p><p><br/></p>
操作:
跳过导航链接。
净化工程
洁净室
汽车世界
安全常识
汽车养护
品牌欣赏
商品欣赏
商品评测
高逼格
商品对比
法律法规
法律法规
民生政策
游戏动漫
动漫天地
游戏欣赏
Flash游戏
健康生活
杂文
职务分类
便民服务
影视天地
教育
生活常识
饮食文化
偏方药方
养生之道
圣经领悟
开心一笑
品牌黑白帮
妇婴
旅游天地
购物天堂
中国村镇
旅游景点
旅游咨询
创业天地
创业故事
公司管理
创业项目
工作技巧
展会
资料
电脑技术
维修
电脑知识
文学
人间万象
历史
古诗词
人生感悟
海贝官方
商品欣赏
招标信息
海贝新闻
招聘专栏
关于我们
行情动态
海贝娱乐
海贝项目
会员礼品
商品报价
特惠信息
摄影天地
古风古韵
花鸟鱼虫
秀美山河
静物拍摄
风土人情
节日祝福
城市风光
美女摄影
编程天地
JAVA
UI
数据库
系统
asp.net
APP
JQ与JS