这里实现一个简单的使用FCK对新闻内容进行分页的功能
整个DEMO需要手动创建3个文件
1、FCK添加新闻内容页;2、展示分页效果页面;3、分页处理类
为了不浪费寻求分页帮助的朋友宝贵的时间,先上效果图,看是不是您想要的,如果是的话,
再往下看。貌似这“刻薄”不能上传附件,具体
的DEMO我会上传到共享资源中。
添加新闻
点添加之后显示页面:
如果显示第一页,之后页码和下一页,如果是最后一页,则只有页码和上一页,如果您需要全部显示稍后在GetPage.cs类中添加相关代码就可以了。
下面说下具体的操作
首先新建网站 取名:FCKPagesTest
复制FCK文件包"fckeditor"到项目中,并找到fckeditor/editor/js/替换DEMO中所给的两个JS类。
名称分别为:fckeditorcode_gecko.js 和 fckeditorcode_ie.js
然后找到"fckeditor"下的fckconfig.js文件,打开文件,这里需要做三个操作:
一:
fckconfig 51行 FCKConfig.PluginsPath = FCKConfig.BasePath + 'plugins/'; 之后添加
FCKConfig.Plugins.Add( 'insertpage','zh-cn' ) ;
FCKConfig.Plugins.Add('flvPlayer', 'zh-cn');
二:
FCKConfig.DefaultLanguage = 'en'; 修改为
FCKConfig.DefaultLanguage = 'zh-cn';
三:
在默认功能项FCKConfig.ToolbarSets["Default"] =
后面的项中添加'PageBreak'
我这里的把大部分功能都添加进去了 不过为了方便你您查看,贴出选项这里的代码,红色是我们刚加进去的:
FCKConfig.ToolbarSets["Default"] = [
['Source'],
['Cut', 'Copy', 'Paste', 'PasteText', 'PasteWord', '-', 'Print', 'SpellCheck'],
['Undo', 'Redo', '-', 'Find', 'Replace', '-', 'SelectAll', 'RemoveFormat'],
['Bold', 'Italic', 'Underline', 'StrikeThrough', '-', 'Subscript', 'Superscript'],
['OrderedList', 'UnorderedList', '-', 'Outdent', 'Indent', 'Blockquote'],
['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyFull'],
['Link', 'Unlink', 'Anchor'],
['Image', 'Flash', 'Table', 'Rule', 'Smiley', 'SpecialChar', 'flvPlayer','PageBreak'],
['FontFormat', 'FontName', 'FontSize'],
['TextColor', 'BGColor'],
];
到这里为止FCK分页的准备工作就处理好了,考了驾照得上路才行,在我们刚才新建的网站中 添加ASPX页面 取名:AddNews.aspx,注册FCK控件,当然如果直接从工具拖到页面会帮你做好注册这一步。并且配好:BasePath
一:
注册FCK
<%@ Register Assembly="FredCK.FCKeditorV2" Namespace="FredCK.FCKeditorV2" TagPrefix="FCKeditorV2" %>
二:
<FCKeditorV2:FCKeditor ID="FckNewsContent" runat="server" Width="700px" Height="400px"
BasePath="fckeditor/">
</FCKeditorV2:FCKeditor>
浏览看下FCK控件,在工具条的最后是不是发现分页符了呢?
这时候可以跟前面效果展示的图一样直接插入新闻内容了,在需要换行的地方加入分页符。
接下来我们处理下分页类GetPage.cs ,代码不多,加上注释换行才70多行,其中红色注释部
分,这里解释下,如果您的是根据编号查询
的,那么直接传入参数string New_Guid,把注释部分取消注释,由于这里只是个DEMO,所
以做了简单处理,添加新闻之后直接显示内容
了。
using System;
using System.Text;
using System.Text.RegularExpressions;
/// <summary>
///GetPage 的摘要说明
/// </summary>
public class GetPage
{
/// <summary>
/// 新闻内容分页
/// </summary>
/// <param name="content">要分页的内容</param>
/// <returns>当前页新闻内容</returns>
public static string NewsContentPager(string content, string New_Guid)
{
if (content == null)
{
return null;
}
content = EnHtml(content);
string p = "//[page//]";
if (content.IndexOf("[page]") != -1)
{
string page = System.Web.HttpContext.Current.Request.QueryString["page"];
string[] arrContent = Regex.Split(content, p, RegexOptions.IgnoreCase);
int pageSize = arrContent.Length;
if (String.IsNullOrEmpty(page))
page = "0";
if (int.Parse(page) >= pageSize)
{
System.Web.HttpContext.Current.Response.StatusCode = 404;
System.Web.HttpContext.Current.Response.End();
}
//生成分页页码
StringBuilder sb = new StringBuilder();
sb.Append(arrContent[int.Parse(page)].ToString());
sb.Append("<div id=/"newspager/" class=/"newPager/">");
if (int.Parse(page) > 0)
//sb.AppendFormat("<a href=/"?page={0}&news_guid={1}/">上一页</a> ", int.Parse(page) - 1, New_Guid);
sb.AppendFormat("<a href=/"?page={0}/">上一页</a> ", int.Parse(page) - 1);
for (int i = 0; i < pageSize; i++)
{
if (i == int.Parse(page))
sb.AppendFormat(" <span>{0}</span> ", i + 1);
else
{
//sb.AppendFormat(" <a href=/"?page={0}&news_guid={1}/">{2}</a> ", i, New_Guid, i + 1);
sb.AppendFormat(" <a href=/"?page={0}/">{1}</a> ", i, i + 1);
}
}
if (int.Parse(page) < pageSize - 1)
//sb.AppendFormat("<a href=/"?page={0}&news_guid={1}/">下一页</a> ", int.Parse(page) + 1, New_Guid);
sb.AppendFormat("<a href=/"?page={0}/">下一页</a> ", int.Parse(page) + 1);
sb.Append("</div>");
return sb.ToString();
}
else
{
return content;
}
}
public static string EnHtml(string str)
{
if (str == null)
return "";
str = str.Replace("<div>[page]</div>", "[page]");
str = str.Trim();
return str;
}
}
驾照拿着,也到了高速的入口,开始享受开车的乐趣吧。
最后只需要您把新闻内容传入处理方法中,等待返回结果,并输出到界面就行了。
Demo下载地址:FCK新闻分页Demo