salesforce使用Apex控制器和VF实现自定义服务器端分页项目实战(自定义分页)

此篇博文将完整地介绍如何自定义数据列表分页,学习本节后你将学到如下知识:

1、如何扩展原有的标准控制器,让自定义扩展器发挥更个性的功能,在vf中增加extensions属性实现自定义控制器的关联;

2、如何利用表达式编辑或删除记录,以及如何利用表达式进行逻辑判断;

下面是code部分:

public class AccountListController {  
  
    List<Account> account{get;set;}  
  
    public AccountListController (ApexPages.StandardController controller) {  
  
    }  
  
  
    // instantiate the StandardSetController from a query locator  
    public ApexPages.StandardSetController con {  
        get {  
            if(con == null) {  
                con = new ApexPages.StandardSetController(Database.getQueryLocator(  
                   [SELECT Id, Name , Type , Phone, Owner.Name, Industry FROM Account Order By Name limit 100])); 
                // sets the number of records in each page set  
                con.setPageSize(15);  
            }  
            return con;  
        }  
        set;  
    }  
  
    // returns a list of wrapper objects for the sObjects in the current page set  
    public List<Account> getAccounts() {  
  
        return (List<Account>) con.getRecords();  
  
    }  
  
    // displays the selected items  
     public PageReference process() {  
    //     for (CategoryWrapper cw : categories) {  
      //       if (cw.checked)  
        //         ApexPages.addMessage(new ApexPages.message(ApexPages.severity.INFO,cw.cat.name));  
       //  }  
         return null;  
     }  
  
    // indicates whether there are more records after the current page set.  
    public Boolean hasNext {  
        get {  
            return con.getHasNext();  
        }  
        set;  
    }  
  
    // indicates whether there are more records before the current page set.  
    public Boolean hasPrevious {  
        get {  
            return con.getHasPrevious();  
        }  
        set;  
    }  
  
    // returns the page number of the current page set  
    public Integer pageNumber {  
        get {  
            return con.getPageNumber();  
        }  
        set;  
    }  
  
    // returns the first page of records  
     public void first() {  
         con.first();  
     }  
  
     // returns the last page of records  
     public void last() {  
         con.last();  
     }  
  
     // returns the previous page of records  
     public void previous() {  
         con.previous();  
     }  
  
     // returns the next page of records  
     public void next() {  
         con.next();  
     }  
  
     // returns the PageReference of the original page, if known, or the home page.  
     public void cancel() {  
         con.cancel();  
     }  
  
}  
<apex:page standardController="Account"  extensions="AccountListController">  
    <apex:form >  
        <apex:pageBlock title="Account List">  
            <apex:pageBlockTable value="{!Accounts}" var="a">  
                <apex:column headerValue="操作" style="width:5%">  
                    <a href="{!URLFOR($Action.Account.Edit,a.id,[retURL=''])}">编辑</a>丨  
                     <a href="{!URLFOR($Action.Account.Delete,a.id,[retURL=''])}">删除</a>  
                </apex:column>  

                <apex:column headerValue="名称" style="width:15%">  
                    <apex:outputLink value="{!URLFOR($Action.Account.View,a.id,[retURL=''])}">{!a.Name}</apex:outputLink>  
                </apex:column>  
                <apex:column headerValue="行业"  style="width:15%">  
                    <apex:outputField value="{!a.Industry}"/>  
                </apex:column>  
                <apex:column headerValue="电话" style="width:15%">  
                    <a href="#" οnclick="singheadDial('6112',{!a.Phone});" id="dial2">  
                        <apex:outputPanel rendered="{!IF(a.Phone != '',true,false)}">  
                            {!a.Phone}  
                            <!-- 
                            <apex:image url="{!URLFOR($Resource.phone1, 'phone1.jpg')}" height="15px" width="15px"/>
                             -->  
                        </apex:outputPanel>  
                    </a>  
                </apex:column>  
                <apex:column headerValue="类型" style="width:15%">  
                        <apex:outputField value="{!a.Type}" />  
                </apex:column>  
            </apex:pageBlockTable>  
        </apex:pageBlock>  
  
        <apex:panelGrid columns="4">  
            <apex:commandLink action="{!first}">First</apex:commandlink>  
            <apex:commandLink action="{!previous}" rendered="{!hasPrevious}">Previous</apex:commandlink>  
            <apex:commandLink action="{!next}" rendered="{!hasNext}">Next</apex:commandlink>  
            <apex:commandLink action="{!last}">Last</apex:commandlink>  
        </apex:panelGrid>  
  
    </apex:form>  
</apex:page>  


效果预览:


  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值