亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

自定義控件

系統(tǒng) 1759 0
最近做項(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)容
    
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("&nbsp;&nbsp;");
                writer.Write("每頁(yè)");
                writer.Write(PageNum);
                writer.Write("條");
                writer.Write("&nbsp;&nbsp;");
                writer.Write("共");
                writer.Write(PageCount);
                writer.Write("頁(yè)");
                writer.Write("&nbsp;&nbsp;");
                writer.Write("當(dāng)前為第");
                writer.AddAttribute(HtmlTextWriterAttribute.Class, "f90");
                writer.RenderBeginTag(HtmlTextWriterTag.B);
                writer.Write(CurrentPageIndex);
                writer.RenderEndTag();
                writer.Write("頁(yè)");
                writer.Write("&nbsp;&nbsp;");
                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("&nbsp;&nbsp;");
                    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ì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 欧美日韩一 | 精品综合久久久久久97超人 | 久热免费在线视频 | 5g影院天天5g天天爽精品 | 国产女人成人精品视频 | 搜一级毛片 | 日本三级不卡 | 青青青在线视频人视频在线 | 日本欧洲亚洲一区在线观看 | 四虎4hu影库永久地址 | 亚洲国产精品网 | 精品一区二区三区在线成人 | 伊在人亚洲香蕉精品区麻豆 | 久久综合视频网站 | 日本-区二区三区免费精品 日本热久久 | 在线观看黄色网 | 色涩视频| 国产精品免费大片 | 欧美精品日本一级特黄 | 四虎影院永久免费 | 亚洲综合区 | 亚州中文 | 天天干天天爽 | 老妇毛片久久久久久久久 | 操片免费 | 深夜影院在线 | 青青国产在线播放 | 色婷婷久久久swag精品 | 日日操夜夜操天天操 | 亚洲精品99久久久久久 | 国产精品麻豆高清在线观看 | 九色视频网站 | 亚洲国产成人久久综合一 | 99热这里只有精品免费国产 | 天天摸夜夜操 | 国产精品亚洲欧美大片在线看 | 久久精品国产99久久72 | 亚洲欧美大片 | 精品在线视频观看 | 亚洲视频免费播放 | 日本一线一区二区三区免费视频 |