salesforce开发之 apex分页的两种实现方式

2022-08-08 18:28:30 浏览数 (1)

在系统集成时,如何用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();

0 人点赞