DataGrid基于Access的快速分页法
// 产生根据指定字段排序并分页查询的 SELECT 语句。 public static String Paging( int pageSize, // 每页要显示的记录的数目。 int pageIndex, // 要显示的页的索引。 int recordCount, // 数据表中的记录总数。 String tableName, // 要查询的数据表。 St
// 产生根据指定字段排序并分页查询的 SELECT 语句。
public static String Paging(
int pageSize, //每页要显示的记录的数目。
int pageIndex, //要显示的页的索引。
int recordCount, //数据表中的记录总数。
String tableName, //要查询的数据表。
String queryFields, //要查询的字段。
String primaryKey, //主键字段。
bool ascending, //是否为升序排列。
String condition //查询的筛选条件。
) {
StringBuilder sb = new StringBuilder();
int pageCount = GetPageCount(recordCount,pageSize); //分页的总数
int middleIndex = GetMidPageIndex(pageCount); //中间页的索引
int firstIndex = 0; //第一页的索引
int lastIndex = pageCount - 1; //最后一页的索引
if (pageIndex
// 代码略
} else if (pageIndex > firstIndex && pageIndex
sb.Append("SELECT TOP ").Append(pageSize).Append(" ")
.Append(queryFields).Append(" FROM ").Append(tableName)
.Append(" WHERE ").Append(primaryKey);
if (ascending)
sb.Append(" > (").Append(" SELECT MAX(");
else
sb.Append("
sb.Append(primaryKey).Append(") FROM ( SELECT TOP ")
.Append(pageSize*pageIndex).Append(" ").Append(primaryKey)
.Append(" FROM ").Append(tableName);
if (condition != String.Empty)
sb.Append(" WHERE ").Append(condition);
sb.Append(" ORDER BY ").Append(primaryKey).Append(" ")
.Append(GetSortType(ascending)).Append(" ) TableA )");
if (condition != String.Empty)
sb.Append(" AND ").Append(condition);
sb.Append(" ORDER BY ").Append(primaryKey).Append(" ")
.Append(GetSortType(ascending));
}
else if (pageIndex > middleIndex && pageIndex
// 代码略
} else if (pageIndex >= lastIndex) {
// 代码略
}
return sb.ToString();
}