现在的位置: 首页 > 综合 > 正文

ASP.NET 中 FCK新闻分页实现

2013年09月08日 ⁄ 综合 ⁄ 共 4362字 ⁄ 字号 评论关闭

这里实现一个简单的使用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>&nbsp;", int.Parse(page) - 1, New_Guid);
                sb.AppendFormat("<a href=/"?page={0}/">上一页</a>&nbsp;", int.Parse(page) - 1);

            for (int i = 0; i < pageSize; i++)
            {
                if (i == int.Parse(page))
                    sb.AppendFormat("&nbsp;<span>{0}</span>&nbsp;", i + 1);
                else
                {
                   
//sb.AppendFormat("&nbsp;<a href=/"?page={0}&news_guid={1}/">{2}</a>&nbsp;", i, New_Guid, i + 1);
                    sb.AppendFormat("&nbsp;<a href=/"?page={0}/">{1}</a>&nbsp;", i, i + 1);

                }
            }
            if (int.Parse(page) < pageSize - 1)
            
    //sb.AppendFormat("<a href=/"?page={0}&news_guid={1}/">下一页</a>&nbsp;", int.Parse(page) + 1, New_Guid);
                sb.AppendFormat("<a href=/"?page={0}/">下一页</a>&nbsp;", 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

抱歉!评论已关闭.