/// <summary> /// DataTable分頁並取出指定頁碼的數據 /// </summary> /// <param name="dtAll">DataTable</param> /// <param name="pageNo">頁碼,注意:從1開始</param> /// <param name="pageSize">每頁條數</param> /// <returns>指定頁碼的DataTable數據</returns> private DataTable getOnePageTable(DataTable dtAll, int pageNo, int pageSize) { var totalCount = dtAll.Rows.Count; var totalPage = getTotalPage(totalCount, pageSize); var currentPage = pageNo; currentPage = (currentPage > totalPage ? totalPage : currentPage);//若是PageNo過大,則較正PageNo=PageCount currentPage = (currentPage <= 0 ? 1 : currentPage);//若是PageNo<=0,則改成首頁 //----克隆表結構到新表 var onePageTable = dtAll.Clone(); //----取出1頁數據到新表 var rowBegin = (currentPage - 1) * pageSize; var rowEnd = currentPage * pageSize; rowEnd = (rowEnd > totalCount ? totalCount : rowEnd); for (var i = rowBegin; i <= rowEnd - 1; i++) { var newRow = onePageTable.NewRow(); var oldRow = dtAll.Rows[i]; foreach (DataColumn column in dtAll.Columns) { newRow[column.ColumnName] = oldRow[column.ColumnName]; } onePageTable.Rows.Add(newRow); } return onePageTable; } /// <summary> /// 返回分頁後的總頁數 /// </summary> /// <param name="totalCount">總記錄條數</param> /// <param name="pageSize">每頁顯示條數</param> /// <returns>總頁數</returns> public int getTotalPage(int totalCount, int pageSize) { var totalPage = (totalCount / pageSize) + (totalCount % pageSize > 0 ? 1 : 0); return totalPage; }