ListView选择自动分页时 其实就是添加了一个DataPager分页控件两者间存在着嵌套关系《Repeater与ListView》中提到这样的分页并不是高效的 因为数据源还是返回了所有的数据 而非当前页数据
优化方案及步骤:
1.改数据源EnablePaging属性为true 【允许分页】
设置MaximumRowsParameterName="rowIndex"【MSDN解释:该参数接受检索的行数的值 可以理解为:上一页的最后一行的下标】
设置StartRowIndexParameterName="pageSize"【MSDN解释:该参数接受要检索的第一行索引的值 可以理解为pageSize 即每页显示条数】
SelectCountMethod="GetTotalRowsCount" 【需要总行数数时执行的方法即一共有多少条数据告诉分页控件如何显示】
2、此时数据源调用的原有方法getAllClasses不再满足要求需要在业务层中新增一个带MaximumRowsParameterName及StartRowIndexParameterName参数名称的方法 以及GetTotalRowsCount两个方法
BLL层添加如下:
代码如下:
View Code
public List <MODEL.Classes > getPageListByPage( int pageSize, int rowIndex) { return dal.getPageListByPage(pageSize, rowIndex, false);
}
public int GetTotalRowsCount() {
return dal.GetTotalRowsCount();
}
DAL层添加如下:
代码如下:
View Code
public List <MODEL. Classes> getPageListByPage( int rowIndex, int pageSize, bool isDel) { int rowCount = 0;
int pageCount = 0;
DataTable dt = SqlHelper .getPageListByPage(rowIndex, pageSize, out rowCount, out pageCount, isDel);
if (dt.Rows.Count > 0) {
List <MODEL.Classes > list = new List <MODEL.Classes >();
foreach (DataRow dr in dt.Rows) {
MODEL. Classes model = new MODEL. Classes();
LoadEntityData(model, dr);
list.Add(model);
}
新闻热点
疑难解答
图片精选