1、asp分页控件实例超详细简单由于项目开发中需要用到分页的功能,所以自己就研究并写了一个分页控件,其中的实现全部是个人理解并进行编写的代码,而且我也写了一个事例供大家参考(没有做任何美工的处理)!希望能对大家有所帮助!在文章最后我会附上全部代码的链接供大家下载,并可以继续优化! 运行后的效果如下:其中控件的核心就是定义一个委托,并开放一个事件出来!在本控件中定义如下:public delegate void GoPageHandler(int PageOrder);public event GoPageHandler GoPage;说好了核心,就要看一下我写的分页控件的前台代码了,我就直接截图了
2、: 总共有:0条 , 15 条/页, 当前第1 /1 页 这前台代码没什么好说的了,就是几个label加几个ImageButton 控件(每个ImageButton 控件都有一个OnClick事件,对应了后台的一个方法)喽!下面主要来说说后台代码:首先来说说控件的初始化页面代码:protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) imgBtnPrevPage.Enabled = false; /首次加载上一页按钮不可用 if (this.PageCount = 1) /如果页数为1,那么下一页按钮也不可用
3、imgBtnNextPage.Enabled = false; 下面就改定义一下这个分页控件的属性了,通过属性你可以定义控件的大小等等,当然了你还可以自己开放更多的属性,比如“上一页”“下一页”这些ImageButton 控件的图片。 #region 属性 #region 当前页 / / 当前页 / public int CurrentPage set ViewStateCurrentPage = value; this.lblCurrentPage.Text = value.ToString(); get if (ViewStateCurrentPage = null) return 1;
4、return (int)ViewStateCurrentPage; #endregion #region 当前页序号 / / 当前页的序号 / public int CurrentPageNo get if (this.txtToPage.Text.Trim() != ) return Convert.ToInt16(this.txtToPage.Text.Trim(); else return 1; set this.txtToPage.Text = value.ToString(); #endregion #region 页面的总数 / / 页面的总数,来自数据库查询设置 / public
5、 int PageCount get try return Convert.ToInt32(ViewStatePageCount); catch return 0; set ViewStatePageCount = value; #endregion #region 每页记录数 / / 每页记录数 / public int PageSize get if (ViewStatePageSize = null) return 15; return (int)ViewStatePageSize; set ViewStatePageSize = value; #endregion #region 总共
6、条数 public int TotalCount get try return (int)ViewStateRecordCount; catch return 0; set if (value = 0) ViewStatePageCount = 0; else if (value PageSize) ViewStatePageCount = 1; else if (value % PageSize = 0) ViewStatePageCount = value / PageSize; else ViewStatePageCount = (value - value % PageSize) /
7、PageSize + 1; ViewStateRecordCount = value; this.lblTotalCount.Text = value.ToString(); this.lblNumPerPage.Text = PageSize.ToString(); this.lblTotalPage.Text = PageCount.ToString(); #endregion #endregion接下来就要写这个分页控件ImageButton 控件的对应的OnClick事件的代码了!我都已经做了注释,就直接粘贴代码了(总共有五个ImageButton控件)! #region 首页按钮事件
8、 / / 首页 / / / protected void imgBtnFirstPage_Click(object sender, ImageClickEventArgs e) int PageOrder = 1; if (JudgePageOrder(PageOrder) & (GoPage != null) OnGoToPage(PageOrder); imgBtnPrevPage.Enabled = false;/已经处于首页则上一页按钮不可用 if (this.PageCount != 1)/如果总页数不为1则使下一页按钮可用 imgBtnNextPage.Enabled = true
9、; #endregion #region 上一页按钮事件 / / 上一页 / / / protected void imgBtnPrevPage_Click(object sender, ImageClickEventArgs e) if (this.CurrentPage 1) int PageOrder = this.CurrentPage - 1; if (JudgePageOrder(PageOrder) OnGoToPage(PageOrder); if (this.CurrentPage = 1)/如果当前页已经是第一页了,则是上一页按钮不可用 imgBtnPrevPage.Ena
10、bled = false; if (this.CurrentPage != this.PageCount)/如果当前页不等于总页数,则使得下一页按钮可用 imgBtnNextPage.Enabled = true; else ScriptManager.RegisterStartupScript(this, this.GetType(), info, alert(这已经是第一页了!);, true); return; #endregion #region 上一页按钮事件 / / 下一页 / / / protected void imgBtnNextPage_Click(object sende
11、r, ImageClickEventArgs e) if (this.CurrentPage this.PageCount) int PageOrder = this.CurrentPage + 1; if (JudgePageOrder(PageOrder) OnGoToPage(PageOrder); if (this.CurrentPage = this.PageCount)/如果当前页等于总页数则使得下一页按钮不可用 imgBtnNextPage.Enabled = false; if (this.CurrentPage != 1)/如果当前页不等于1则使得前一页按钮可用 imgBtn
12、PrevPage.Enabled = true; else ScriptManager.RegisterStartupScript(this, this.GetType(), info, alert(这已经是最后一页了!);, true); return; #endregion #region 尾页按钮事件 / / 尾页 / / / protected void imgBtnLastPage_Click(object sender, ImageClickEventArgs e) int PageOrder = this.PageCount; if (JudgePageOrder(PageOrd
13、er) OnGoToPage(PageOrder); imgBtnNextPage.Enabled = false;/已经处于尾页,使下一页按钮不可用 if (this.PageCount != 1)/如果总页数不等于1,则使得前一页按钮可用 imgBtnPrevPage.Enabled = true; #endregion #region 转到指定页按钮事件 / / 转到指定页 / / / protected void imgBtnGoPage_Click(object sender, ImageClickEventArgs e) try if (string.IsNullOrEmpty(t
14、xtToPage.Text.Trim() return; if (!IsInt(txtToPage.Text.Trim() ScriptManager.RegisterStartupScript(this, this.GetType(), info, alert(请输入整数!);, true); return; if (Convert.ToInt64(txtToPage.Text.Trim() PageCount) ScriptManager.RegisterStartupScript(this, this.GetType(), info, alert(请输入小于最大页数的整数!);, tru
15、e); return; if (Convert.ToInt32(txtToPage.Text.Trim() 1) ScriptManager.RegisterStartupScript(this, this.GetType(), info, alert(请输入大于0的整数!);, true); return; int page = Convert.ToInt32(txtToPage.Text); int PageOrder = page; if (JudgePageOrder(PageOrder) OnGoToPage(PageOrder); catch txtToPage.Text = ;
16、#endregion大家发现没有,实现imgBtnGoPage_Click事件的时候调用了一个IsInt()方法,这个方法的实现如下: #region 验证用户输入转到页面的正确性 private bool IsInt(string toPage) bool flag = false; if (string.IsNullOrEmpty(toPage) return flag; else flag = Regex.IsMatch(toPage, -?d+$); return flag; #endregion好了,再仔细观察代码是不是发现,这几个事件里面都有一段相同的代码: if (JudgePa
17、geOrder(PageOrder) OnGoToPage(PageOrder); 我来详细的解释一下:JudgePageOrder(PageOrder)用来判断跳转的页面是否合法(通俗的讲就是有没有超出页面范围): #region 判断PageOrder的合法性 / / 判断PageOrder的合法性 / / 需要判断的PageOrder / 是否合法 private bool JudgePageOrder(int PageOrder) if (PageOrder PageCount) return false; return true; #endregion OnGoToPage(Page
18、Order)就是我们文章开始讲的核心了,是这个分页控件的核心!在后面的实例中我会告诉大家如何来用。先把代码罗列给大家: protected virtual bool OnGoToPage(int gotoPageIndex) if (GoPage != null) this.CurrentPage = gotoPageIndex; GoPage(gotoPageIndex);/触发核心事件,来关联数据 return true; 分页控件已经描述完了,由于个人不擅长讲解,所以请大家包涵。下面继续讲解这个分页控件的调用的一个实例!前台代码有两点需要注意:1.需要注册这个分页控件。2.调用的代码是: 完整的代码如下: 分页控件 asp:Bo
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1