最近做項(xiàng)目見(jiàn)到別人寫(xiě)的一個(gè)分頁(yè)控件不錯(cuò),記錄一下關(guān)于路徑的問(wèn)題。
一、解決方案
二、添加類(lèi)庫(kù)項(xiàng)目test
三、添加引用System.Web
四、test下添加類(lèi)文件Pagination.cs
五、test下添加樣式文件Pagination.css(右鍵此文件--屬性--生成操作--嵌入的資源)
六、Pagination.cs文件下添加如下內(nèi)容
七、注:類(lèi)文件的命名空間任意,嵌入資源路徑要注意。
八、結(jié)構(gòu)圖如下:
九、vs工具箱--添加選項(xiàng)卡--選擇薦--瀏覽(上面生成的dll文件)--確定完成。
或者:將dll文件拖曳入vs工具箱中即可。
十、拖曳使用控件。
十一、例句如下:
十二、效果圖:
十三、附件:編譯完成可用的 dll文件
一、解決方案
二、添加類(lèi)庫(kù)項(xiàng)目test
三、添加引用System.Web
四、test下添加類(lèi)文件Pagination.cs
五、test下添加樣式文件Pagination.css(右鍵此文件--屬性--生成操作--嵌入的資源)
六、Pagination.cs文件下添加如下內(nèi)容
using System; using System.Text.RegularExpressions; using System.Web; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; //這里是引用嵌入資源的路徑 項(xiàng)目名稱(chēng).文件夾.文件名 [assembly: WebResource("test.css.Pagination.css", "css")] namespace Common //命名空間任意 { public class Pagination : WebControl, INamingContainer, IPostBackEventHandler { public enum PaginationMode { Get, Post } #region = 1 Count = /// <summary> /// 內(nèi)容總條數(shù) /// </summary> public int Count { get { return ViewState["Count"] != null ? (int)ViewState["Count"] : 0; } set { ViewState["Count"] = value; } } #endregion #region = 2 PageNum = /// <summary> /// 每頁(yè)內(nèi)容數(shù) /// </summary> public int PageNum { get { return ViewState["PageNum"] != null ? (int)ViewState["PageNum"] : 20; } set { ViewState["PageNum"] = value; } } #endregion #region = 3 CurrentPageIndex = /// <summary> /// 當(dāng)前頁(yè)數(shù) /// </summary> public int CurrentPageIndex { get { int currentpageindex = 1; if (ViewState["CurrentPageIndex"] != null) { int.TryParse(ViewState["CurrentPageIndex"].ToString(), out currentpageindex); } else { if (this.Page.Request.QueryString["pages"] != null) { int.TryParse(this.Page.Request.QueryString["pages"].ToString(), out currentpageindex); } } currentpageindex = currentpageindex < 1 ? 1 : currentpageindex; currentpageindex = currentpageindex > PageCount ? PageCount : currentpageindex; return currentpageindex; } set { ViewState["CurrentPageIndex"] = value; } } #endregion #region = 4 PageCount = /// <summary> /// 總頁(yè)數(shù) /// </summary> public int PageCount { get { return (Count / PageNum) + ((Count % PageNum) == 0 ? 0 : 1); } } #endregion #region = 5 CssUrl = /// <summary> /// 分頁(yè)樣式 /// </summary> public string CssUrl { get { return ViewState["CssUrl"] != null ? ViewState["CssUrl"].ToString() : this.Page.ClientScript.GetWebResourceUrl(base.GetType(), "test.css.Pagination.css"); } //項(xiàng)目名稱(chēng).文件夾.文件名 set { ViewState["CssUrl"] = value; } } #endregion #region = 6 Mode = /// <summary> /// Pagination的模式 /// </summary> public PaginationMode Mode { get { object obj = this.ViewState["Mode"]; return ((obj == null) ? PaginationMode.Get : ((PaginationMode)obj)); } set { this.ViewState["Mode"] = value; } } #endregion #region = 7 PagesName = /// <summary> /// 分頁(yè)樣式 /// </summary> public string PagesName { get { return ViewState["PagesName"] != null ? ViewState["PagesName"].ToString() : "pages"; } set { ViewState["PagesName"] = value; } } #endregion protected override HtmlTextWriterTag TagKey { get { return HtmlTextWriterTag.Div; } } protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); if (this.PageCount > 1) { if ((this.Page != null) && (this.Page.Header != null)) { string cssKey = "PaginationCss"; if (this.Page.Header.FindControl(cssKey) == null) { HtmlLink child = new HtmlLink(); child.ID = cssKey; child.Href = CssUrl; child.Attributes["type"] = "text/css"; child.Attributes["rel"] = "stylesheet"; this.Page.Header.Controls.Add(child); } this.CssClass = "pagenumber"; } } } #region = RenderContents = protected override void RenderContents(HtmlTextWriter writer) { base.RenderContents(writer); if (this.PageCount > 1) { writer.Write("共"); writer.Write(Count); writer.Write("條"); writer.Write(" "); writer.Write("每頁(yè)"); writer.Write(PageNum); writer.Write("條"); writer.Write(" "); writer.Write("共"); writer.Write(PageCount); writer.Write("頁(yè)"); writer.Write(" "); writer.Write("當(dāng)前為第"); writer.AddAttribute(HtmlTextWriterAttribute.Class, "f90"); writer.RenderBeginTag(HtmlTextWriterTag.B); writer.Write(CurrentPageIndex); writer.RenderEndTag(); writer.Write("頁(yè)"); writer.Write(" "); writer.Write("選擇頁(yè)數(shù):"); for (int i = 1; i < 5; i++) { if ((CurrentPageIndex - 5 + i) > 0) { if (this.Mode == PaginationMode.Get) { if (HttpContext.Current.Request.RawUrl.ToString().Contains(PagesName + "=")) { writer.AddAttribute(HtmlTextWriterAttribute.Href, Regex.Replace(HttpContext.Current.Request.RawUrl.ToString(), "(.+" + PagesName + "=)(\\d+)(.*)", "$1") + (CurrentPageIndex - 5 + i).ToString() + Regex.Replace(HttpContext.Current.Request.RawUrl.ToString(), "(.+" + PagesName + "=)(\\d+)(.*)", "$3")); } else if (HttpContext.Current.Request.QueryString.Count != 0) { writer.AddAttribute(HtmlTextWriterAttribute.Href, HttpContext.Current.Request.RawUrl.ToString() + "&" + PagesName + "=" + (CurrentPageIndex - 5 + i).ToString()); } else { writer.AddAttribute(HtmlTextWriterAttribute.Href, "?" + PagesName + "=" + (CurrentPageIndex - 5 + i).ToString()); } writer.AddAttribute(HtmlTextWriterAttribute.Class, "pagenumber"); writer.RenderBeginTag(HtmlTextWriterTag.A); writer.Write((CurrentPageIndex - 5 + i).ToString()); writer.RenderEndTag(); } else { PostBackOptions postBackOptions = this.GetPostBackOptions(CurrentPageIndex - 5 + i); string postBackEventReference = null; if (postBackOptions != null) { postBackEventReference = this.Page.ClientScript.GetPostBackEventReference(postBackOptions, true); } if (string.IsNullOrEmpty(postBackEventReference)) { postBackEventReference = "javascript:void(0)"; } writer.AddAttribute(HtmlTextWriterAttribute.Href, postBackEventReference); writer.AddAttribute(HtmlTextWriterAttribute.Class, "pagenumber"); writer.RenderBeginTag(HtmlTextWriterTag.A); writer.Write((CurrentPageIndex - 5 + i).ToString()); writer.RenderEndTag(); } } } writer.AddAttribute(HtmlTextWriterAttribute.Class, "current"); writer.RenderBeginTag(HtmlTextWriterTag.B); writer.Write(CurrentPageIndex); writer.RenderEndTag(); for (int i = 1; i < 5; i++) { if ((CurrentPageIndex + i) <= PageCount) { if (this.Mode == PaginationMode.Get) { if (HttpContext.Current.Request.RawUrl.ToString().Contains(PagesName + "=")) { writer.AddAttribute(HtmlTextWriterAttribute.Href, Regex.Replace(HttpContext.Current.Request.RawUrl.ToString(), "(.+" + PagesName + "=)(\\d+)(.*)", "$1") + (CurrentPageIndex + i).ToString() + Regex.Replace(HttpContext.Current.Request.RawUrl.ToString(), "(.+" + PagesName + "=)(\\d+)(.*)", "$3")); } else if (HttpContext.Current.Request.QueryString.Count != 0) { writer.AddAttribute(HtmlTextWriterAttribute.Href, HttpContext.Current.Request.RawUrl.ToString() + "&" + PagesName + "=" + (CurrentPageIndex + i).ToString()); } else { writer.AddAttribute(HtmlTextWriterAttribute.Href, "?" + PagesName + "=" + (CurrentPageIndex + i).ToString()); } writer.AddAttribute(HtmlTextWriterAttribute.Class, "pagenumber"); writer.RenderBeginTag(HtmlTextWriterTag.A); writer.Write((CurrentPageIndex + i).ToString()); writer.RenderEndTag(); } else { PostBackOptions postBackOptions = this.GetPostBackOptions(CurrentPageIndex + i); string postBackEventReference = null; if (postBackOptions != null) { postBackEventReference = this.Page.ClientScript.GetPostBackEventReference(postBackOptions, true); } if (string.IsNullOrEmpty(postBackEventReference)) { postBackEventReference = "javascript:void(0)"; } writer.AddAttribute(HtmlTextWriterAttribute.Href, postBackEventReference); writer.AddAttribute(HtmlTextWriterAttribute.Class, "pagenumber"); writer.RenderBeginTag(HtmlTextWriterTag.A); writer.Write((CurrentPageIndex + i).ToString()); writer.RenderEndTag(); } } } if ((CurrentPageIndex + 4) < PageCount) { writer.Write("..."); } if (this.Mode == PaginationMode.Get) { writer.Write(" "); writer.Write("跳轉(zhuǎn)到第"); writer.Write("<input id=\"" + this.UniqueID + "\" type=\"text\" onkeypress=\"if(event.keyCode==13){location.href='"); if (HttpContext.Current.Request.RawUrl.ToString().Contains("pages=")) { writer.Write(Regex.Replace(HttpContext.Current.Request.RawUrl.ToString(), "(.+" + PagesName + "=)([\\w\\W^&]*)(.*)", "$1") + "'+this.value+'" + Regex.Replace(HttpContext.Current.Request.RawUrl.ToString(), "(.+" + PagesName + "=)([\\w\\W^&]*)(.*)", "$3") + "'"); } else if (HttpContext.Current.Request.QueryString.Count != 0) { writer.Write(HttpContext.Current.Request.RawUrl.ToString() + "&" + PagesName + "='+this.value"); } else { writer.Write(HttpContext.Current.Request.RawUrl.ToString() + "?" + PagesName + "='+this.value"); } writer.Write(";return false;}\" class=\"page_input\"/>"); writer.Write("頁(yè)"); } } } #endregion private PostBackOptions GetPostBackOptions(int index) { PostBackOptions options = new PostBackOptions(this, index.ToString()); options.RequiresJavaScriptProtocol = true; return options; } public void RaisePostBackEvent(string eventArgument) { int num; if (int.TryParse(eventArgument, out num)) { this.CurrentPageIndex = num; } } } }
七、注:類(lèi)文件的命名空間任意,嵌入資源路徑要注意。
八、結(jié)構(gòu)圖如下:

九、vs工具箱--添加選項(xiàng)卡--選擇薦--瀏覽(上面生成的dll文件)--確定完成。
或者:將dll文件拖曳入vs工具箱中即可。
十、拖曳使用控件。
十一、例句如下:
//頭部自動(dòng)生成引用 <%@ Register Assembly="test" Namespace="Common" TagPrefix="cc1" %> <!--控件拖入此頁(yè)面自動(dòng)生成如下內(nèi)容--> <cc1:Pagination ID="Pagination1" runat="server" /> //后臺(tái)代碼樣例 protected void Page_Load(object sender, EventArgs e) { Pagination1.Count = 1000; Pagination1.PageNum = 10; } protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); //注:Repeater控件rptProblemCollection的數(shù)據(jù)源 //Pagination分頁(yè)控件ID:UPProblemCollectionPagination //PageNum 頁(yè)容量 //CurrentPageIndex當(dāng)前頁(yè)下標(biāo),注意sql拼寫(xiě)時(shí)判斷CurrentPageIndex<=0時(shí)為1 if (isMyQuestion) rptProblemCollection.DataSource = MeetingQuestion.GetAdvanceQuestion(UPProblemCollectionPagination.CurrentPageIndex, UPProblemCollectionPagination.PageNum, MeetingID, CurrentUserID, AUserID, KeyString); else rptProblemCollection.DataSource = MeetingQuestion.GetAdvanceQuestion(UPProblemCollectionPagination.CurrentPageIndex, UPProblemCollectionPagination.PageNum, MeetingID, 0, AUserID, KeyString); rptProblemCollection.DataBind(); }
十二、效果圖:

十三、附件:編譯完成可用的 dll文件
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
