asp分页控件实例超详细简单.docx

上传人:b****5 文档编号:7390801 上传时间:2023-01-23 格式:DOCX 页数:18 大小:32.83KB
下载 相关 举报
asp分页控件实例超详细简单.docx_第1页
第1页 / 共18页
asp分页控件实例超详细简单.docx_第2页
第2页 / 共18页
asp分页控件实例超详细简单.docx_第3页
第3页 / 共18页
asp分页控件实例超详细简单.docx_第4页
第4页 / 共18页
asp分页控件实例超详细简单.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

asp分页控件实例超详细简单.docx

《asp分页控件实例超详细简单.docx》由会员分享,可在线阅读,更多相关《asp分页控件实例超详细简单.docx(18页珍藏版)》请在冰豆网上搜索。

asp分页控件实例超详细简单.docx

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的合法性

///

///需要判断的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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1