ObjectDataSource 內建分頁支援,關鍵在於正確設定四個屬性:
EnablePaging="true":啟用分頁模式SelectMethod:取得當頁資料的方法SelectCountMethod:取得總筆數的方法StartRowIndexParameterName、MaximumRowsParameterName:對應方法參數名稱(起始索引、最大筆數)SelectCountMethod 通常簡單(SELECT COUNT(*)),但 SelectMethod 需支援「從第 N 筆取 M 筆」。傳統做法常寫緊耦合特定資料表的預存程序,難以重用。
iBATIS ISqlMapper 提供完美契合的方法:
IList<T> QueryForList<T>(
string statementName,
object parameterObject,
int skipResults, // 對應 StartRowIndexParameterName
int maxResults // 對應 MaximumRowsParameterName
);
後兩參數直接對應 ObjectDataSource 的分頁參數,無需修改 SQL、無需預存程序,極具通用性。
測試資料 20 萬筆,翻頁耗時約 0.7 秒,效能優異。

結合 ObjectDataSource 內建分頁機制與 iBATIS QueryForList 的 skipResults/maxResults 參數,即可輕鬆實作通用、高效、零 SQL 侵入的分頁功能。