public override IDataReader GetByPage(object tableName, string fieldList, FilterObject[] filterObjects, OrderObject[] orderObjects, int pageNum, int pageSize, ref int pageCount, ref int totalRowCount) { string filter = PagingHelper.CreateSafeFilter(filterObjects); try { totalRowCount = (int)SqlHelper.ExecuteScalar(_connectionString, StoredProcedureName.TotalRowCount, tableName, filter); } catch { totalRowCount = 0; } if (totalRowCount == 0) { pageCount = 0; return(null); } if (pageSize <= 0 || totalRowCount <= pageSize) { pageCount = 1; } else { pageCount = (totalRowCount + pageSize - 1) / pageSize; } if (pageNum < 1 || pageNum > pageCount) { return(null); } return(SqlHelper.ExecuteReader(_connectionString, StoredProcedureName.GetByPage, tableName, fieldList, filter, PagingHelper.CreateOrder(orderObjects), pageNum, pageSize, pageCount)); }