您的当前位置:首页正文

DataGrid基于Access的快速分页法

2020-11-09 来源:爱go旅游网

// 产生根据指定字段排序并分页查询的 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 <= firstIndex) {

// 代码略

} else if (pageIndex > firstIndex && pageIndex <= middleIndex) {

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(" < (").Append(" SELECT MIN(");

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 < lastIndex) {

// 代码略

} else if (pageIndex >= lastIndex) {

// 代码略

}

return sb.ToString();

}

显示全文