由于项目开发中需要用到分页的功能,所以自己就研究并写了一个asp.net分页控件,其中的实现全部是个人理解并进行编写的代码,而且我也写了一个事例供大家参考(没有做任何美工的处理)!希望能对大家有所帮助!在文章最后我会附上全部代码的链接供大家下载,并可以继续优化! 运行后的效果如下:
其中控件的核心就是定义一个委托,并开放一个事件出来! 在本控件中定义如下:
public delegate void GoPageHandler(int PageOrder); public event GoPageHandler GoPage;
说好了核心,就要看一下我写的asp.net分页控件的前台代码了,我就直接截图了:
<%@
Control
Language=\
AutoEventWireup=\
CodeFile=\
Inherits=\ %>
总共有:, 条/页,
当前第/页
ID=\
runat=\
ImageUrl=\ OnClick=\ />
OnClick=\ />
ID=\
runat=\
Width=\
Height=\
MaxLength=\asp:TextBox>
ID=\
runat=\
ImageUrl=\
OnClick=\ />
这前台代码没什么好说的了,就是几个label加几个ImageButton 控件(每个ImageButton 控件都有一个OnClick事件,对应了后台的一个方法)喽! 下面主要来说说后台代码:
首先来说说控件的初始化页面代码:
protected void Page_Load(object sender, EventArgs e) {
if (!IsPostBack) {
imgBtnPrevPage.Enabled = false; //首次加载上一页按钮不可用
if (this.PageCount == 1) //如果页数为1,那么下一页按钮也不可用 {
imgBtnNextPage.Enabled = false; } }
}
下面就改定义一下这个asp.net分页控件的属性了,通过属性你可以定义控件的大小等等,当然了你还可以自己开放更多的属性,比如“上一页”“下一页”这些ImageButton 控件的图片。 #region 属性 #region 当前页 ///
public int CurrentPage { set {
ViewState[\] = value;
this.lblCurrentPage.Text = value.ToString(); } get {
if (ViewState[\] == null) return 1; return (int)ViewState[\]; } }
#endregion
#region 当前页序号 ///
public int CurrentPageNo { get { if
(this.txtToPage.Text.Trim()
!=
Convert.ToInt16(this.txtToPage.Text.Trim()); else return 1; } set {
this.txtToPage.Text = value.ToString(); } }
#endregion
#region 页面的总数 ///
/// 页面的总数,来自数据库查询设置 /// public int PageCount { get { try {
return Convert.ToInt32(ViewState[\]); } catch {
return 0;
\)
return
} } set {
ViewState[\] = value; } }
#endregion
#region 每页记录数 ///
if (ViewState[\] == null) return 15; return (int)ViewState[\]; } set {
ViewState[\] = value; } }
#endregion
#region 总共条数 public int TotalCount { get { try {
return (int)ViewState[\]; } catch {
return 0; } } set {
if (value == 0) {
ViewState[\] = 0; }
else if (value < PageSize) {
ViewState[\] = 1; } else {
if (value % PageSize == 0) {
ViewState[\] = value / PageSize; } else {
ViewState[\] = (value - value % PageSize) / PageSize + 1; } }
ViewState[\] = value;
this.lblTotalCount.Text = value.ToString(); this.lblNumPerPage.Text = PageSize.ToString(); this.lblTotalPage.Text = PageCount.ToString(); } }
#endregion #endregion
接下来就要写这个asp.net分页控件ImageButton 控件的对应的OnClick事件的代码了!我都已
经做了注释,就直接粘贴代码了(总共有五个ImageButton控件)! #region 首页按钮事件
///
///
protected void imgBtnFirstPage_Click(object sender, ImageClickEventArgs e) {
int PageOrder = 1;
if (JudgePageOrder(PageOrder) && (GoPage != null)) {
OnGoToPage(PageOrder); }