/// <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; }