這裡實現一個簡單的使用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