c#自定義分頁控件

      前一陣子輔導實習生做一個學生管理系統的雛形,發現他們對自定義控件的理解不是很好,所以今天得閒就把分頁控件的製作一步步講解出來,也給自己做個鞏固。

 

一、自定義分頁控件的外觀(這個很簡單,直接拖拽控件就可以了)

linkButton 控件要有onclick事件

dropdown控件要有OnSelectedIndexChanged事件,且autopostback爲true

 

二、定義事件和委託
public delegate void OnPageIndexChangedDelegate(int pageIndex);

[Description("頁面跳轉事件")]
[Browsable(true)]
public event OnPageIndexChangedDelegate OnPageIndexChanged = delegate { };

 

三、定義相關屬性

//頁碼

 public int PageSize
    {
        get
        {
            if (ViewState["PageSize"] == null)
            {
                ViewState["PageSize"] =5;
            }

            return (int)ViewState["PageSize"];
        }
        set
        {
            ViewState["PageSize"] = value;
        }
    }

//記錄數

    public int RecordCount
    {
        get
        {
            if (ViewState["RecordCount"] == null)
            {
                ViewState["RecordCount"] = 0;
            }

            return (int)ViewState["RecordCount"];
        }
        set { ViewState["RecordCount"] = value; }
    }

//頁數

    public int PageCount
    {
        get { return (int)(Math.Ceiling(RecordCount / (double)PageSize)); }
    }

//當前頁

    public int CurrentPageIndex
    {
        get
        {
            if (ViewState["CurrentPageIndex"] == null)
            {
                ViewState["CurrentPageIndex"] = 1;
            }
            return (int)ViewState["CurrentPageIndex"];
        }
        set { ViewState["CurrentPageIndex"] = value; }
    }

   

 

四、相關方法

 

1、在自定義控件的page_load事件中初始化控件的值

2、定義public方法Bind()

如果recordcount爲0的時候,四個linkbutton按鈕全部不可以用。

如果pageCount小於1的時候,四個linkbutton按鈕全部不可以用

如果當前頁爲1的時候,下一頁和末頁不可用

如果當前頁爲pagecount的時候,首頁和上一頁不可以用。

3、四個linkbutton的onclick事件

首頁:當前頁碼爲1,調用OnPageIndexChanged

上一頁:當前頁面-1,調用OnPageIndexChanged

下一頁:當前頁面+1,調用OnPageIndexChanged

末頁:當前頁面爲pagecount,OnPageIndexChanged

 

五、如何使用

1、直接把自己定義的分頁控件拖拽到頁面中

2、在頁面的pageload中要定義分頁控件的OnPageIndexChanged事件。如:

this.Pager1.OnPageIndexChanged += new pager.OnPageIndexChangedDelegate(Pager1_OnPageIndexChanged);

3、在Pager1_OnPageIndexChanged(int pageIndex)的方法中調用gridview的綁定,並且把pageindex和pagesize傳過去。

4、至於分頁的sql語句,或者分頁的存儲過程需要自己另寫。

 

六、擴展功能

       到第五步爲止,一個簡單的自定義分頁控件已經完成,但是有的分頁控件可能還有下拉列表用於選擇每頁顯示的條數,有文本框用於跳轉到指定的頁碼。還有些用戶說中a頁面中分頁控件上面的文本叫“首頁、上一頁、下一頁、末頁”,在b頁面中我想要控件上的文本是”<<、<、>、>>“。我總不能重新再寫一個吧。

       其實這些都很簡單,你只要在分頁控件中添加一些屬性就可以了

如:改變控件上文本的內容,你可以定義一個屬性叫FirstPageText,用於對首頁的按鈕文本進行設置,其餘的依次類推

public string FirstPageText
        {
            get { return lnkFirstPage.Text; }
            set { lnkFirstPage.Text = value; }
        }

 

如:在文本框中輸入頁碼,跳轉到相應的頁面。在textbox的TextChanged事件中對currentPageIndex賦值,然後調用OnPageIndexChanged。

 

注:差點忘了一點了,分頁控件要繼續自UserControl哦

 

七:總結

其實自定義控件很強大,我們要善於用自己的大腦和微軟提供的開發框架。讓程序在自己的手裏變魔術~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章