前一陣子輔導實習生做一個學生管理系統的雛形,發現他們對自定義控件的理解不是很好,所以今天得閒就把分頁控件的製作一步步講解出來,也給自己做個鞏固。
一、自定義分頁控件的外觀(這個很簡單,直接拖拽控件就可以了)
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哦
七:總結
其實自定義控件很強大,我們要善於用自己的大腦和微軟提供的開發框架。讓程序在自己的手裏變魔術~