您好,欢迎访问一九零五行业门户网

介绍asp.net的几种分页方式

通常分页有3种方法,分别是asp.net自带的数据显示空间如gridview等自带的分页,第三方分页控件如aspnetpager,存储过程分页等。这里分别做总结。 
第一种:使用gridview自带分页,这种是最简单的分页方法。 
前台的方法
<asp:gridview id="gridview1" allowpaging="true" runat="server" onpageindexchanging="gridview1_pageindexchanging" pagesize="3"> </asp:gridview>
后台方法:
using system; using system.collections.generic; using system.linq; using system.web; using system.web.ui; using system.web.ui.webcontrols; using jxsoft.ticketmanage.model; using jxsoft.ticketmanage.bll; using system.text.regularexpressions; using system.data; namespace jxsoft.ticketmanage.web { public partial class test : system.web.ui.page { protected void page_load(object sender, eventargs e) { if(!ispostback) { binddata(); } } protected void binddata() { datatable dt=new datatable(); dt.columns.add("id"); dt.columns.add("name"); for (int i = 0; i < 10;i++ ) { dt.rows.add(i.tostring(), i.tostring()); } this.gridview1.datasource = dt; this.gridview1.databind(); } protected void gridview1_pageindexchanging(object sender, gridviewpageeventargs e) { this.gridview1.pageindex = e.newpageindex; binddata(); } } }
第二种:使用个性化显示的aspnetpager.dll进行分页
此处需要添加aspnetpager.dll的引用
前台:
<form id="form1" runat="server"> <div> <asp:gridview id="gridview1" runat="server" > </asp:gridview> <webdiyer:aspnetpager id="aspnetpager1" runat="server" custominfohtml="第%currentpageindex%页,共%pagecount%页,每页%pagesize%条" firstpagetext="首页" lastpagetext="尾页" layouttype="table" nextpagetext="下一页" onpagechanging="aspnetpager1_pagechanging" pageindexboxtype="dropdownlist" pagingbuttonlayouttype="span" prevpagetext="上一页" showcustominfosection="left" showpageindexbox="always" submitbuttontext="go" pagesize="4" textafterpageindexbox="页" textbeforepageindexbox="转到"> </webdiyer:aspnetpager> </div> </form>
后台:
using system; using system.collections.generic; using system.linq; using system.web; using system.web.ui; using system.web.ui.webcontrols; using jxsoft.ticketmanage.model; using jxsoft.ticketmanage.bll; using system.text.regularexpressions; using system.data; namespace jxsoft.ticketmanage.web { public partial class test : system.web.ui.page { protected void page_load(object sender, eventargs e) { if(!ispostback) { binddata(); } } protected void binddata() { datatable dt=new datatable(); dt.columns.add("id"); dt.columns.add("name"); for (int i = 0; i < 10;i++ ) { dt.rows.add(i.tostring(), i.tostring()); } dataset ds = new dataset(); ds.tables.add(dt); pager(this.gridview1, this.aspnetpager1, ds); } protected void pager(gridview dl, wuqi.webdiyer.aspnetpager anp, system.data.dataset dst) { pageddatasource pds = new pageddatasource(); pds.datasource = dst.tables[0].defaultview; pds.allowpaging = true; anp.recordcount = dst.tables[0].defaultview.count; pds.currentpageindex = anp.currentpageindex - 1; pds.pagesize = anp.pagesize; dl.datasource = pds; dl.databind(); } protected void aspnetpager1_pagechanging(object src, wuqi.webdiyer.pagechangingeventargs e) { aspnetpager1.currentpageindex = e.newpageindex; binddata(); } } }
第三种:使用aspnetpager结合存储过程进行分页
这种方法分页稍微复杂一些,但是可以应付比较大的数据量。
前台:
<asp:gridview id="gridview1" runat="server" cssclass="gridtable" autogeneratecolumns="false" onrowdatabound="gridview1_rowdatabound" > </asp:gridview> <webdiyer:aspnetpager id="aspnetpager1" runat="server" custominfohtml="第%currentpageindex%页,共%pagecount%页,每页%pagesize%条" firstpagetext="首页" lastpagetext="尾页" layouttype="table" nextpagetext="下一页" onpagechanged="aspnetpager1_pagechanged" pageindexboxtype="dropdownlist" pagingbuttonlayouttype="span" prevpagetext="上一页" showcustominfosection="left" showpageindexbox="always" submitbuttontext="go" pagesize="4" textafterpageindexbox="页" textbeforepageindexbox="转到"> </webdiyer:aspnetpager>
后台:
//绑定方法中需要传递aspnetpager的两个属性 protected void databind(){ dataset ds = reportquerybll.gettcikdetailreport(this.txtstartdate.text,this.txtenddate.text,int.parse( this.dropdownlistpartment1.selectedvalue), this.txtpayperson1.text,this.txtticketnum.text,this.txtticketno.text, aspnetpager1.startrecordindex,aspnetpager1.endrecordindex);//注意最后两个参数是aspnetpager的属性。 this.gridview1.datasource = ds; this.gridview1.databind(); } //分页控件的页索引变化事件 protected void aspnetpager1_pagechanged(object src, eventargs e) { binddetailreporttogv(); } //page_base中需要加载首次的数据条数 dataset ds = reportquerybll.getdetail(this.txtstartdate.text, this.txtenddate.text, int.parse(this.dropdownlistpartment1.selectedvalue), this.txtpayperson1.text, this.txtticketnum.text, this.txtticketno.text); this.aspnetpager1.recordcount = ds.tables[0].rows.count; binddetailreporttogv();
这里用的存储过程比较复杂,因为sql语句没有能够放到视图中,也无法直接从表中查出结果,这个存储过程有点变态,如果有朋友看到了,希望能指点一下。
其实存储过程的核心在于:
create procedure [dbo].[p_getpagedorders2005] (@startindex int, @endindex int ) as select * from (select row_number() over(order by ipid desc) as rownum, [ipid],[ipfrom],[ipto],[iplocation],[ipcity],[iptonumber],[ipfromnumber] from ipinfo) as u where rownum between @startindex and @endindex go
以上就是介绍asp.net的几种分页方式的详细内容。
其它类似信息

推荐信息