列表视图选择自动分页时其实就是添加了一个数据分页器分页控件两者间存在着嵌套关系《Repeater与ListView》 中提到这样的分页并不是高效的因为数据源还是返回了所有的数据而非当前页数据
列表视图选择自动分页时其实就是添加了一个数据分页器分页控件两者间存在着嵌套关系《Repeater与ListView》 中提到这样的分页并不是高效的因为数据源还是返回了所有的数据而非当前页数据
优化方案及步骤:
1.改数据源启用分页属性为真实[允许分页】
设置MaximumRowsParameterName=' rowIndex '【MSDN解释:该参数接受检索的行数的值可以理解为:上一页的最后一行的下标】
设置StartRowIndexParameterName=' pageSize '【MSDN解释:该参数接受要检索的第一行索引的值可以理解为页面大小即每页显示条数】
SelectCountMethod=' GetTotalRowsCount '【需要总行数数时执行的方法即一共有多少条数据告诉分页控件如何显示】
2、此时数据源调用的原有方法getAllClasses不再满足要求需要在业务层中新增一个带MaximumRowsParameterName及StartRowIndexParameterName参数名称的方法以及gettotalrrowscount两个方法
基地址定位连接层添加如下:
复制代码代码如下:查看代码
公共列表模型class getPageListByPage(int pageSize,int rowIndex){ return dal。getPageListByPage(pageSize,rowIndex,false);}
public int GetTotalRowsCount(){ return dal .GetTotalRowsCount();}DAL层添加如下:
复制代码代码如下:查看代码
公共列表模型. class getPageListByPage(int rowIndex,int pageSize,bool is del){ int rowCount=0;int页计数=0;DataTable dt=SqlHelper .getPageListByPage(rowIndex,pageSize,out rowCount,out pageCount,is del);如果(dt .行。计数0) {列表模型。类别列表=新列表模型Classesforeach(数据行博士学位.行){模型。类别模型=新模型ClassesLoadEntityData(型号,博士);列表。添加(型号);}返回列表;}返回null}
public int GetTotalRowsCount(){ string sqlstr=' select * from classes where cisdel=0 ';返回SqlHelper .ExecuteScalar(sqlstr);}SqlHelper新增方法如下:
复制代码代码如下:查看代码
public static DataTable getPageListByPage(int rowIndex,int pageSize,out int rowCount,out int pageCount,bool isDel){ DataTable dtcalss=new DataTable();行数=0;页数=0;using(SqlConnection sqlcon=new SqlConnection(Connstr)){ sqldata adapter sda=new sqldata adapter(' up _ get page data 2 ',sqlcon);SQL parameter[]pars={ new SQL parameter(' @ LastRowIndex ',RowIndex),new SqlParameter ( '@pgSize ',pageSize),new SqlParameter ( '@rowCount ',rowCount),new SqlParameter ( '@pgCount ',pageCount),new SqlParameter ( '@isDel ',isDel),};//将两个输出参数的输出方向指定解析器[2]。方向=参数方向。输出;解析器[3]。方向=参数方向。输出;//将参数集合加入到查询命令对象中sda .选择命令。参数。添加范围(解析器);//设置查询命令类型为存储过程sda .选择命令。CommandType=CommandType .存储过程;//执行存储过程sda .填充(dtcalss);//执行完后将存储过程获得的两个输出参数值赋给此方法的两个输出参数rowCount=Convert .ToInt32(解析器[2])。值);pageCount=Convert .ToInt32(解析器[3])。值);}返回dtcalss }存储过程up_GetPageData2代码如下:
复制代码代码如下:查看代码
create proc up _ get page data 2 @ LastRowIndex int,-上一页的最后一行的下标@pgSize float,-页容量@rowCount int输出,-输出总行数@pgCount int输出,-输出总页数@isDel位-数据是否删除as begin select @ rowCount=count(*)from类,其中cisdel=@isDel -查出总行数set @ pgCount=ceiling(@ rowCount/@ pgSize)-算出总页数select * from(select Row _ Number()over(order by cid)as RNum,* from classes where cisdel=@ isDel)as temp where RNum @ LastRowIndex and RNum=@ LastRowIndex @ pgsizeendlistview。aspx代码如下:
复制代码代码如下:查看代码
% @ Page Language=' c# ' AutoEventWireup=' true ' code behind=' listview。aspx。cs ' Inherits=' web窗体.ListView"%!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN ' ' http://www。w3。org/TR/XHTML 1/DTD/XHTML 1-过渡。DTD ' html xmlns=' http://www。w3。org/1999/XHTML ' head runat=' server ' title/title/head body form id=' form 1 ' runat=' server ' div
ASP:object data source ID=' object data source 1 ' runat=' server ' select method=' getPageListByPage ' TypeName=' BLL .类"数据对象类型名称="模型' class ' Delete method=' SoftDel ' insert method=' Add ' update method=' Modify ' enable paging=' True ' MaximumRowsParameterName=' rowIndex ' select count method=' GetTotalRowsCount ' startrowindexparamname=' pageSize '/ASP:object data source ASP:ListView ID=' ListView 1 ' runat=' server ' data source I=' object data source 1 ' insert item position=' last item ' alternating item template tr style=' ' TD ASP:Button ID=' Delete Button ' runat=' server删除/ASP:Button ID=' Edit Button ' runat=' server ' command name=' Edit ' Text='编辑//TD TD ASP:Label ID=' CID Label ' runat=' server ' Text=' % # Eval(' CID ')% '//TD TD ASP:Label ID=' CName Label ' runat=' server ' Text=' % # Eval(' CName ')% '//TD TD TD ASP:Label ID=' CCount Label ' runat=' server ' Text=' % # Eval(' CCount ')% '//TD TD ASP:Label ID=' CImg Label ' runat=' server ' Text=' % # Eval(' CImg ')% '//TD TD ASP:CheckBox ID=' CIsDelCheckBox ' runat=' server ' Checked=' % # Eval(。
edit item template tr style=' ' TD ASP:Button ID=' Update Button ' runat=' server ' command name=' Update ' Text='更新/ASP:Button ID=' Cancel Button ' runat=' server ' command name=' Cancel ' Text='取消//TD TD ASP:TextBox ID=' CID TextBox ' runat=' server ' Text=' % # Bind(' CID ')% '//TD TD ASP:TextBox ID=' CName TextBox ' runat=' server ' Text=' % # Bind(' CName ')% '//TD TD ASP:TextBox ID=' CCount TextBox ' runat=' server ' Text=' % # Bind(' CCount ')% '//TD TD ASP:TextBox ID=' CImgTextBox ' runat=' server ' Text=' % # Bind(' CImg ')% '//TD TD ASP:CheckBox ID=' CIsDelCheckBox ' runat=' server ' Checked=' % # Bind(' CIsDel ')% '//TD TD ASP:TextBox ID=' CAddTimeTextBox ' runat=' server ' Text=' % # Bind(' CAddTime ')% '//TD/tr/edit item template EmptyDataTemplate table runat=' server '
style='' tr td未返回数据/TD/tr/table/EmptyDataTemplate插入项模板tr style=' ' TD ASP:Button ID=' Insert Button ' runat=' server ' command name=' Insert ' Text='插入/ASP:Button ID=' Cancel Button ' runat=' server ' command name=' Cancel ' Text='清除//TD TD ASP:TextBox ID=' CID TextBox ' runat=' server ' Text=' % # Bind(' CID ')% '//TD TD ASP:TextBox ID=' CName TextBox ' runat=' server ' Text=' % # Bind(' CName ')% '//TD TD ASP:TextBox ID=' CCount TextBox ' runat=' server ' Text=' % # Bind(' CCount ')% '//TD TD ASP:TextBox ID=' CImgTextBox ' runat=' server ' Text=' % # Bind(' CImg ')% '//TD TD ASP:CheckBox ID=' CIsDel CheckBox ' runat=' server ' Checked=' % # Bind(' CIsDel ')% '//TD TD ASP:TextBox ID=' CAddTimeTextBox ' runat=' server ' Text=' % # Bind(' Bind insert item template item template tr style=' ' TD ASP:Button ID=' Delete Button ' runat=' server ' command name=' Delete ' Text='删除/ASP:Button ID=' Edit Button ' runat=' server ' command name=' Edit ' Text='编辑//TD TD ASP:Label ID=' CID Label ' runat=' server ' Text=' % # Eval(' CID ')% '//TD TD ASP:Label ID=' CName Label ' runat=' server ' Text=' % # Eval(' CName ')% '//TD TD ASP:Label ID=' account Label ' runat=' server ' Text=' % # Eval(' CCount ')% '//TD TD ASP:Label ID=' CImg Label ' runat=' server ' Text=' % # Eval(' CImg ')% '//TD TD ASP:CheckBox ID=' CIsDelCheckBox ' runat=' server ' Checked=' % # Eval(' CIsDel ')% ' Enabled=' false '//TD TD ASP:Label ID=' CAddTimeLabel ' runat=' server ' Text=' % # Eval(' CAddTime ')% '//TD/tr/item模板布局模板表runat=' server ' tr runat
style=' ' tr runat=' server ' style=' ' th runat=' server '/th runat=' server ' CID/th runat=' server ' CName/th runat=' server ' account/th runat=' server ' CImg/th runat=' server ' CIsDel/th runat=' server ' cadd time/th/tr tr ID=' item placeholder ' runat=' server '/tr/table/TD/tr runat=' server ' TD runat=' server '
style=' '/TD/tr/table/layout template selecteditem template tr style=' ' TD ASP:Button ID=' Delete Button ' runat=' server ' command name=' Delete ' Text='删除/ASP:Button ID=' Edit Button ' runat=' server ' command name=' Edit ' Text='编辑//TD TD ASP:Label ID=' CID Label ' runat=' server ' Text=' % # Eval(' CID ')% '//TD TD ASP:Label ID=' CName Label ' runat=' server ' Text=' % # Eval(' CName ')% '//TD TD ASP:Label ID=' account Label ' runat=' server ' Text=' % # Eval(' CCount ')% '//TD TD ASP:Label ID=' CImg Label ' runat=' server ' Text=' % # Eval(' CImg ')% '//TD TD ASP:CheckBox ID=' CIsDelCheckBox ' runat=' server ' Checked=' % # Eval(' CIsDel ')% ' Enabled=' false '//TD TD ASP:Label ID=' CAddTimeLabel ' runat=' server ' Text=' % # Eval(' CAddTime ')% '//TD/tr/selecteditem template
/div ASP:data pager ID=' data pager 1 ' runat=' server ' paged control=' listview 1 ' PageSize=' 5 ' Fields ASP:NextPreviousPagerField Button type=' Button ' ShowFirstPageButton=' True ' ShowLastPageButton=' True '/Fields/ASP:data pager/form/body/html 3、界面中列表视图一取消'开启分页'自动分页拖入分页控件数据页面并设置PagedControlID='ListView1 '使其与列表视图一建立关联
4、修改数据源调用的方法为getPageListByPage运行结果如下:
补充:
如果运行报错对象数据源“对象数据源1”未能找到带参数的非泛型方法" getPageListByPage ":页面大小,页面索引
只需删除aspx界面中
选择参数
asp:参数默认值=' 5 ' Name=' pageSize ' Type=' int 32 '/
asp:参数名称='rowIndex '类型='Int32' /
/选择参数
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。