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);
}
新聞熱點
疑難解答
圖片精選