在系统集成时,如何用apex将查询出来的记录分页呢?(非sf标准组件)
第一种方式:用代码实现分页 (每一页数据为20条)
代码语言:javascript复制List<Account> acclist = [Select Id,Name FRom Account Order by Name desc];
List<Account> returnList=new List<Account>();
// 当前第N页
Integer page=Integer.valueOf(reqs.get('PageNumber'));
if(page==1)
{
if(acclist.size()>=20)
{
for(Integer i=0;i<20;i )
{
returnList.add(acclist[i]);
}
}
else
{
for(Account cs:acclist)
{
returnList.add(cs);
}
}
}
else
{
Integer size=page*20;
Integer lastsize=(page-1)*20;
if(acclist.size()>=size)
{
for(Integer i=lastsize;i<size;i )
{
returnList.add(acclist[i]);
}
}
else if(acclist.size()>=lastsize&&acclist.size()<=size)
{
for(Integer i=lastsize;i<acclist.size();i )
{
returnList.add(acclist[i]);
}
}
else if(acclist.size()<=lastsize)
{
return new Map<String, String> { 'status' => 'success', 'message' => '当前数据已全部显示.' };
}
}
第二种方式: 巧妙利用StandardSetController实现分页 (每一页数据为20条)
代码语言:javascript复制String sql = 'Select Id,Name FRom Account Order by Name desc';
ApexPages.StandardSetController con = new ApexPages.StandardSetController(Database.getQueryLocator(sql));
// 每页多少条
con.setPageSize(20);
// 当前返回第xx页
con.setPageNumber(pageNumber);
// 给前端返回最大条数
setMaxPageNumber(con.getResultSize());
// 获得当前页面数据
List<OrderDetail__c> result = con.getRecords();