前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >salesforce开发之 apex分页的两种实现方式

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

原创
作者头像
zcx
修改2022-08-08 18:28:30
4280
修改2022-08-08 18:28:30
举报

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档