asp.net 페이지 컨트롤

18162 단어 asp.net
오랫동안 webform 을 사용 하지 않 았 습 니 다.이번에 한 프로젝트 는 webform(마이크로소프트 가 추천 하 는 것 은 mvc)을 사용 해 야 합 니 다.한가 할 때 페이지 컨트롤 을 쓰 고 나 오 면 쓸데없는 말 을 하지 않 고 코드 를 직접 올 립 니 다.
[

        DefaultEvent("Paging"),

        DefaultProperty("Text"),

        AspNetHostingPermission(SecurityAction.Demand,

            Level = AspNetHostingPermissionLevel.Minimal),

        AspNetHostingPermission(SecurityAction.InheritanceDemand,

            Level = AspNetHostingPermissionLevel.Minimal),

        ToolboxData("<{0}:Pager runat=\"server\"></{0}:Pager>")

    ]

    public class Pager : CompositeControl

    {

        private LinkButton _lbtnPrevious;

        private LinkButton _lbtnNext;

        private DropDownList _ddlPageItem;



        private static readonly object EventPagingKey =

            new object();



        [Bindable(true)]

        [Category("Appearance")]

        [DefaultValue("")]

        [Localizable(true)]

        public string Text

        {

            get

            {

                string s = (string) ViewState["Text"];

                return (s ?? string.Empty);

            }



            set { ViewState["Text"] = value; }

        }



        [Category("Appearance")]

        [DefaultValue(10)]

        [Localizable(true)]

        public int PageSize

        {

            get

            {

                string s = (string) ViewState["PageSize"];

                int pageSize = 0;

                int.TryParse(s, out pageSize);

                return pageSize;

            }

            set { ViewState["PageSize"] = value.ToString(); }

        }



        [Category("Appearance")]

        [DefaultValue(1)]

        [Localizable(true)]

        public int CurrentPageIndex

        {

            get

            {

                string s = (string) ViewState["CurrentPageIndex"];

                int currentPageIndex = 0;

                int.TryParse(s, out currentPageIndex);

                if (currentPageIndex < 1)

                    currentPageIndex = 1;

                return currentPageIndex;

            }

            set { ViewState["CurrentPageIndex"] = value.ToString(); }

        }



        [Category("Appearance")]

        [DefaultValue(0)]

        [Localizable(true)]

        public int RecordCount

        {

            get

            {

                string s = (string) ViewState["RecordCount"];

                int recordCount = 0;

                int.TryParse(s, out recordCount);

                return recordCount;

            }

            set { ViewState["RecordCount"] = value.ToString(); }

        }



        [Category("Appearance")]

        [DefaultValue(0)]

        [Localizable(true)]

        public int PageCount

        {

            get

            {

                string s = (string) ViewState["PageCount"];

                int pageCount = 0;

                int.TryParse(s, out pageCount);

                return pageCount;

            }

            private set { ViewState["PageCount"] = value.ToString(); }

        }



        private void BuildChildControls()

        {

            if (PageSize > 0)

            {

                PageCount = RecordCount / PageSize;

                if (RecordCount % PageSize != 0)

                    PageCount++;

            }



            _lbtnPrevious = new LinkButton { Text = "   ", ID = "lbtnPrevious", Enabled = (CurrentPageIndex > 1) };

            _lbtnPrevious.Click += _lbtnPrevious_Click;

            this.Controls.Add(_lbtnPrevious);



            _ddlPageItem = new DropDownList { ID = "ddlPageItem", AutoPostBack = true };

            _ddlPageItem.SelectedIndexChanged += _ddlPageItem_SelectedIndexChanged;

            for (var i = 1; i <= PageCount; i++)

            {

                _ddlPageItem.Items.Add(new ListItem(string.Format(" {0} ", i), i.ToString()));

            }

            this.Controls.Add(_ddlPageItem);



            _lbtnNext = new LinkButton { Text = "   ", ID = "lbtnNext", Enabled = (CurrentPageIndex < PageCount) };

            _lbtnNext.Click += _lbtnNext_Click;

            this.Controls.Add(_lbtnNext);

        }



        protected override void CreateChildControls()

        {

            this.Controls.Clear();

            ClearChildControlState();

            BuildChildControls();

        }



        private void _ddlPageItem_SelectedIndexChanged(object sender, EventArgs e)

        {

            int pageIndex;

            int.TryParse(_ddlPageItem.SelectedItem.Value, out pageIndex);

            CurrentPageIndex = pageIndex;

            OnPaging(e);

        }



        public event EventHandler Paging

        {

            add { this.Events.AddHandler(EventPagingKey, value); }

            remove { this.Events.RemoveHandler(EventPagingKey, value); }

        }



        protected virtual void OnPaging(EventArgs e)

        {

            var submitHandler = (EventHandler) Events[EventPagingKey];

            if (submitHandler != null)

            {

                submitHandler(this, e);

            }



            _lbtnPrevious.Enabled = CurrentPageIndex > 1;

            _lbtnNext.Enabled = CurrentPageIndex < PageCount;



            _ddlPageItem.SelectedValue = CurrentPageIndex.ToString();

        }



        private void _lbtnPrevious_Click(object sender, EventArgs e)

        {

            if (CurrentPageIndex > 1)

            {

                CurrentPageIndex -= 1;

                OnPaging(e);

            }

            else

            {

                _lbtnPrevious.Enabled = false;

            }

        }



        private void _lbtnNext_Click(object sender, EventArgs e)

        {

            if (CurrentPageIndex < PageCount)

            {

                CurrentPageIndex += 1;

                OnPaging(e);

            }

            else

            {

                _lbtnNext.Enabled = false;

            }

        }



        protected override void Render(HtmlTextWriter writer)

        {

            base.Render(writer);

        }

    }

기능 이 비교적 간단 하고 핸드폰 단말기 asp.net 개발 에 비교적 적합 합 니 다.PC 단 에 서 는 아래 연결 상자 로 페이지 번 호 를 모두 열거 하 는 것 을 권장 하지 않 습 니 다.개선 을 환영 합 니 다.

좋은 웹페이지 즐겨찾기