asp分页控件实例超详细简单.docx
- 文档编号:7390801
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:18
- 大小:32.83KB
asp分页控件实例超详细简单.docx
《asp分页控件实例超详细简单.docx》由会员分享,可在线阅读,更多相关《asp分页控件实例超详细简单.docx(18页珍藏版)》请在冰豆网上搜索。
asp分页控件实例超详细简单
由于项目开发中需要用到分页的功能,所以自己就研究并写了一个分页控件,其中的实现全部是个人理解并进行编写的代码,而且我也写了一个事例供大家参考(没有做任何美工的处理)!
希望能对大家有所帮助!
在文章最后我会附上全部代码的链接供大家下载,并可以继续优化!
运行后的效果如下:
其中控件的核心就是定义一个委托,并开放一个事件出来!
在本控件中定义如下:
publicdelegatevoidGoPageHandler(intPageOrder);
publiceventGoPageHandlerGoPage;
说好了核心,就要看一下我写的分页控件的前台代码了,我就直接截图了:
<%@ControlLanguage="C#"AutoEventWireup="true"CodeFile="DispartPage.ascx.cs"Inherits="component_DispartPage"%>
100%;height: 21px;background: #e7f0ff"cellpadding="0"cellspacing="0"border="0"> 宋体;font-size: 12px;"> 总共有: LabelID="lblTotalCount"runat="server"Text="">0条 Label>, LabelID="lblNumPerPage"runat="server">15 Label>条/页, 当前第 LabelID="lblCurrentPage"runat="server">1 Label>/ LabelID="lblTotalPage"runat="server">1 Label>页 ImageButtonID="imgBtnFirstPage"runat="server"ImageUrl="images/first.gif"OnClick="imgBtnFirstPage_Click"/> ImageButtonID="imgBtnPrevPage"runat="server"ImageUrl="images/back.gif"OnClick="imgBtnPrevPage_Click"/> ImageButtonID="imgBtnNextPage"runat="server"ImageUrl="images/next.gif"OnClick="imgBtnNextPage_Click"/> ImageButtonID="imgBtnLastPage"runat="server"ImageUrl="images/last.gif"OnClick="imgBtnLastPage_Click"/> 宋体;font-size: 13px;"> TextBoxID="txtToPage"runat="server"Width="30px"Height="19px"MaxLength="10"> TextBox> Labelrunat="server"ID="lblGoPage"Text="页"> Label> ImageButtonID="imgBtnGoPage"runat="server"ImageUrl="images/go.gif"OnClick="imgBtnGoPage_Click"/>
这前台代码没什么好说的了,就是几个label加几个ImageButton控件(每个ImageButton控件都有一个OnClick事件,对应了后台的一个方法)喽!
下面主要来说说后台代码:
首先来说说控件的初始化页面代码:
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!
IsPostBack)
{
imgBtnPrevPage.Enabled=false;//首次加载上一页按钮不可用
if(this.PageCount==1)//如果页数为1,那么下一页按钮也不可用
{
imgBtnNextPage.Enabled=false;
}
}
}
下面就改定义一下这个分页控件的属性了,通过属性你可以定义控件的大小等等,当然了你还可以自己开放更多的属性,比如“上一页”“下一页”这些ImageButton控件的图片。
#region属性
#region当前页
///
///当前页
///
publicintCurrentPage
{
set
{
ViewState["CurrentPage"]=value;
this.lblCurrentPage.Text=value.ToString();
}
get
{
if(ViewState["CurrentPage"]==null)return1;
return(int)ViewState["CurrentPage"];
}
}
#endregion
#region当前页序号
///
///当前页的序号
///
publicintCurrentPageNo
{
get
{
if(this.txtToPage.Text.Trim()!
="")returnConvert.ToInt16(this.txtToPage.Text.Trim());
elsereturn1;
}
set
{
this.txtToPage.Text=value.ToString();
}
}
#endregion
#region页面的总数
///
///页面的总数,来自数据库查询设置
///
publicintPageCount
{
get
{
try
{
returnConvert.ToInt32(ViewState["PageCount"]);
}
catch
{
return0;
}
}
set
{
ViewState["PageCount"]=value;
}
}
#endregion
#region每页记录数
///
///每页记录数
///
publicintPageSize
{
get
{
if(ViewState["PageSize"]==null)return15;
return(int)ViewState["PageSize"];
}
set
{
ViewState["PageSize"]=value;
}
}
#endregion
#region总共条数
publicintTotalCount
{
get
{
try
{
return(int)ViewState["RecordCount"];
}
catch
{
return0;
}
}
set
{
if(value==0)
{
ViewState["PageCount"]=0;
}
elseif(value { ViewState["PageCount"]=1; } else { if(value%PageSize==0) { ViewState["PageCount"]=value/PageSize; } else { ViewState["PageCount"]=(value-value%PageSize)/PageSize+1; } } ViewState["RecordCount"]=value; this.lblTotalCount.Text=value.ToString(); this.lblNumPerPage.Text=PageSize.ToString(); this.lblTotalPage.Text=PageCount.ToString(); } } #endregion #endregion 接下来就要写这个分页控件ImageButton控件的对应的OnClick事件的代码了! 我都已经做了注释,就直接粘贴代码了(总共有五个ImageButton控件)! #region首页按钮事件 /// ///首页 /// /// /// protectedvoidimgBtnFirstPage_Click(objectsender,ImageClickEventArgse) { intPageOrder=1; if(JudgePageOrder(PageOrder)&&(GoPage! =null)) { OnGoToPage(PageOrder); } imgBtnPrevPage.Enabled=false;//已经处于首页则上一页按钮不可用 if(this.PageCount! =1)//如果总页数不为1则使下一页按钮可用 { imgBtnNextPage.Enabled=true; } } #endregion #region上一页按钮事件 /// ///上一页 /// /// /// protectedvoidimgBtnPrevPage_Click(objectsender,ImageClickEventArgse) { if(this.CurrentPage>1) { intPageOrder=this.CurrentPage-1; if(JudgePageOrder(PageOrder)) { OnGoToPage(PageOrder); } if(this.CurrentPage==1)//如果当前页已经是第一页了,则是上一页按钮不可用 { imgBtnPrevPage.Enabled=false; } if(this.CurrentPage! =this.PageCount)//如果当前页不等于总页数,则使得下一页按钮可用 { imgBtnNextPage.Enabled=true; } } else { ScriptManager.RegisterStartupScript(this,this.GetType(),"info","alert('这已经是第一页了! ');",true); return; } } #endregion #region上一页按钮事件 /// ///下一页 /// /// /// protectedvoidimgBtnNextPage_Click(objectsender,ImageClickEventArgse) { if(this.CurrentPage { intPageOrder=this.CurrentPage+1; if(JudgePageOrder(PageOrder)) { OnGoToPage(PageOrder); } if(this.CurrentPage==this.PageCount)//如果当前页等于总页数则使得下一页按钮不可用 { imgBtnNextPage.Enabled=false; } if(this.CurrentPage! =1)//如果当前页不等于1则使得前一页按钮可用 { imgBtnPrevPage.Enabled=true; } } else { ScriptManager.RegisterStartupScript(this,this.GetType(),"info","alert('这已经是最后一页了! ');",true); return; } } #endregion #region尾页按钮事件 /// ///尾页 /// /// /// protectedvoidimgBtnLastPage_Click(objectsender,ImageClickEventArgse) { intPageOrder=this.PageCount; if(JudgePageOrder(PageOrder)) { OnGoToPage(PageOrder); } imgBtnNextPage.Enabled=false;//已经处于尾页,使下一页按钮不可用 if(this.PageCount! =1)//如果总页数不等于1,则使得前一页按钮可用 { imgBtnPrevPage.Enabled=true; } } #endregion #region转到指定页按钮事件 /// ///转到指定页 /// /// /// protectedvoidimgBtnGoPage_Click(objectsender,ImageClickEventArgse) { try { if(string.IsNullOrEmpty(txtToPage.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('请输入小于最大页数的整数! ');",true); return; } if(Convert.ToInt32(txtToPage.Text.Trim())<1) { ScriptManager.RegisterStartupScript(this,this.GetType(),"info","alert('请输入大于0的整数! ');",true); return; } intpage=Convert.ToInt32(txtToPage.Text); intPageOrder=page; if(JudgePageOrder(PageOrder)) { OnGoToPage(PageOrder); } } catch { txtToPage.Text=""; } } #endregion 大家发现没有,实现imgBtnGoPage_Click事件的时候调用了一个IsInt()方法,这个方法的实现如下: #region验证用户输入转到页面的正确性 privateboolIsInt(stringtoPage) { boolflag=false; if(string.IsNullOrEmpty(toPage)) returnflag; else { flag=Regex.IsMatch(toPage,@"^-? \d+$"); } returnflag; } #endregion 好了,再仔细观察代码是不是发现,这几个事件里面都有一段相同的代码: if(JudgePageOrder(PageOrder)) { OnGoToPage(PageOrder); } 我来详细的解释一下: JudgePageOrder(PageOrder)用来判断跳转的页面是否合法(通俗的讲就是有没有超出页面范围): #region判断PageOrder的合法性 /// ///判断PageOrder的合法性 /// /// /// privateboolJudgePageOrder(intPageOrder) { if(PageOrder<1) returnfalse; if(PageOrder>PageCount) returnfalse; returntrue; } #endregion OnGoToPage(PageOrder)就是我们文章开始讲的核心了,是这个分页控件的核心! 在后面的实例中我会告诉大家如何来用。 先把代码罗列给大家: protectedvirtualboolOnGoToPage(intgotoPageIndex) { if(GoPage! =null) { this.CurrentPage=gotoPageIndex; GoPage(gotoPageIndex);//触发核心事件,来关联数据 } returntrue; } 分页控件已经描述完了,由于个人不擅长讲解,所以请大家包涵。 下面继续讲解这个分页控件的调用的一个实例! 前台代码有两点需要注意: 1.需要注册这个分页控件。 <%@Registersrc="DispartPage.ascx"tagname="DispartPage"tagprefix="uc1"%> 2.调用的代码是: DispartPageID="DispartPage1"runat="server"/> 完整的代码如下: <%@PageLanguage="C#"AutoEventWireup="true"CodeFile="CodeMgr.aspx.cs"Inherits="CodeMgr"%> DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http: //www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <%@RegisterAssembly="System.Web.Extensions,Version=1.0.61025.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35"Namespace="System.Web.UI"TagPrefix="asp"%> <%@Registersrc="DispartPage.ascx"tagname="DispartPage"tagprefix="uc1"%> //www.w3.org/1999/xhtml"> 6px;font-size: 1px;"> GridViewID="grdType"PageSize="5"runat="server"CssClass="gridview"Width="100%"AllowPaging="True"AutoGenerateColumns="False"OnRowCommand="grdType_RowCommand"> BoundFieldHeaderText="类型编码"DataField="code_type_no"/> Bo 如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。 copyright@ 2008-2022 冰点文档网站版权所有 经营许可证编号:鄂ICP备2022015515号-1
冰豆网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。