function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Gopal ChatGopal Chat 

In my code when i select the last page its showing first page and after reaching last,the message

Here is my code 

<apex:page controller="SearchRecords" showHeader="true" >
    <apex:form id="frm">
        <!----<apex:actionFunction name="showcon" action="{!showContact}" reRender="frm" /> --->
        <apex:pageblock >
            <apex:pageBlockSection title="Search Account Records" columns="1">
                Enter Name<apex:inputText value="{!getstring}" id="theTextInput"/>
                <apex:commandButton action="{!searchRecords}" value="Search" id="theSearch" reRender="frm"/>
            </apex:pageBlockSection>
            
            <apex:pageBlockSection title="Account Detail" id="pb">
                <apex:pageBlocktable value="{!accountlist}" var="acc">
                    <apex:column >
                        <input type="radio" name="group1" reRender="frm"/>
                        <apex:actionSupport event="onclick" action="{!showContact}" reRender="frm" >
                            <apex:param assignTo="{!AccId}" name="accname" value="{!acc.id}"/>
                        </apex:actionSupport>
                    </apex:column>
                    <apex:column value="{!acc.Name}" />
                    <apex:column value="{!acc.Phone}" />
                </apex:pageBlocktable>
            </apex:pageBlockSection>
            
            <apex:pageBlockSection title="Related Contact" id="conpgblk" rendered="{!display}" >
                <apex:outputPanel rendered="{!listWrapper.size == 0}">
                    <b> NO RELATED CONTACTS FOR THIS ACCOUNT.</b> 
                </apex:outputPanel> 
                
                <apex:outputPanel rendered="{!listWrapper.size != 0}">
                    <div align="center" draggable="false" >
                        <apex:commandButton value="Send Email" action="{!SendEmail}" />
                        <apex:commandButton value="Print Detail" action="{!PrintDetail}"/>
                    </div>
                    <apex:pageBlockTable value="{!listWrapper}" var="wrap">
                        <apex:column headerValue="Select">
                            <apex:inputCheckbox value="{!wrap.checked}" id="inputBox"/>
                        </apex:column>
                        <apex:column value="{!wrap.con.Name}"/>
                        <apex:column value="{!wrap.con.Phone}"/>
                        <apex:column value="{!wrap.con.Email}"/>
                        <apex:column value="{!wrap.con.Account.Name}"/>
                        <apex:column value="{!wrap.con.AccountId}"/>
                        <apex:column value="{!wrap.con.Id}"/>
                    </apex:pageBlockTable>
                    <apex:commandButton value="First Page" rerender="conpgblk" action="{!FirstPage}" disabled="{!prev}"/>
                    <apex:commandButton value="Previous" rerender="conpgblk" action="{!previous}" disabled="{!prev}"/>
                    <apex:commandButton value="Next" rerender="conpgblk" action="{!next}" disabled=""/>
                    <apex:commandButton value="Last Page" rerender="conpgblk" action="{!LastPage}" disabled=""/> 
                </apex:outputPanel>
            </apex:pageBlockSection>
        </apex:pageblock>
    </apex:form>
</apex:page>


public class SearchRecords {
    public boolean display{get;set;}
    private integer totalRecs = 0;
    private integer OffsetSize = 0;
    private integer LimitSize=5;
    public String AccId{get;set;}
    public string getstring{get;set;}
    public List<Account> accountlist {get;set;}
    public list<Contact> conList{get;set;}
    public void searchRecords(){
        
        display=false;
        accountlist= new list<Account>();
        if(getstring!=null){
            accountlist= Database.query('select id,AccountNumber,name,Phone from Account where name like \'%'+getstring+'%\'');
        }
    } 
   public List<WrapperClass> listWrapper {get;set;}
    
    public void showContact()
    {
       
        display=true;
        listWrapper = new List<WrapperClass>();
        List<Contact> conlist = [SELECT id,Title,Fax,Birthdate,Name,Account.Name,Phone,Email FROM Contact WHERE AccountId=:AccId LIMIT :LimitSize OFFSET :OffsetSize ];
        if(conlist.size()>0)
        {
            for(contact con:conlist)
            {
                listWrapper.add(new WrapperClass(con));  
            }
        }
    }
    public class WrapperClass 
    {
        public boolean fgjj;
        public Boolean checked {get;set;}
        public contact con {get;set;}
        public WrapperClass(contact con) 
        {
            this.con=con;
            checked=false;
        }
    }
    public pageReference SendEmail(){
        return null;
    }
    public pageReference PrintDetail(){
        return new pageReference('apex/PrintContactDetail');
    }
    public void FirstPage(){
        OffsetSize = 0;
        showContact();
    }
    public void previous(){
        OffsetSize = OffsetSize - LimitSize;
        showContact();
    }
    public void next(){
        OffsetSize = OffsetSize + LimitSize;
        System.debug('>>>>>OffsetSize '+OffsetSize);
        showContact();
    }
    public void LastPage(){
        OffsetSize = totalrecs - math.mod(totalRecs,LimitSize);
        system.debug('====>OffsetSize'+OffsetSize);
        showContact();
    }
    public boolean getprev(){
        showContact();
        if(OffsetSize == 0)
            return true;
        else
            return false;
        
    }
    public boolean getnxt(){
        showContact();
        if((OffsetSize + LimitSize) > totalRecs)
            return true;
        else
            return false;
    }
}
Steven NsubugaSteven Nsubuga
You forgot to set the value of totalRecs in the showContact method. See updated class below.
public class SearchRecords {
    public boolean display{get;set;}
    private integer totalRecs = 0;
    private integer OffsetSize = 0;
    private integer LimitSize=5;
    public String AccId{get;set;}
    public string getstring{get;set;}
    public List<Account> accountlist {get;set;}
    public list<Contact> conList{get;set;}
    public void searchRecords(){
        
        display=false;
        accountlist= new list<Account>();
        if(getstring!=null){
            accountlist= Database.query('select id,AccountNumber,name,Phone from Account where name like \'%'+getstring+'%\'');
        }
    } 
   public List<WrapperClass> listWrapper {get;set;}
    
    public void showContact()
    {
       
        display=true;
        listWrapper = new List<WrapperClass>();
        List<Contact> conlist = [SELECT id,Title,Fax,Birthdate,Name,Account.Name,Phone,Email FROM Contact WHERE AccountId=:AccId LIMIT :LimitSize OFFSET :OffsetSize ];
        if(conlist.size()>0)
        {
            totalRecs = conlist.size();
            for(contact con:conlist)
            {
                listWrapper.add(new WrapperClass(con));  
            }
        }
    }
    public class WrapperClass 
    {
        public boolean fgjj;
        public Boolean checked {get;set;}
        public contact con {get;set;}
        public WrapperClass(contact con) 
        {
            this.con=con;
            checked=false;
        }
    }
    public pageReference SendEmail(){
        return null;
    }
    public pageReference PrintDetail(){
        return new pageReference('apex/PrintContactDetail');
    }
    public void FirstPage(){
        OffsetSize = 0;
        showContact();
    }
    public void previous(){
        OffsetSize = OffsetSize - LimitSize;
        showContact();
    }
    public void next(){
        OffsetSize = OffsetSize + LimitSize;
        System.debug('>>>>>OffsetSize '+OffsetSize);
        showContact();
    }
    public void LastPage(){
        OffsetSize = totalrecs - math.mod(totalRecs,LimitSize);
        system.debug('====>OffsetSize'+OffsetSize);
        showContact();
    }
    public boolean getprev(){
        showContact();
        if(OffsetSize == 0)
            return true;
        else
            return false;
        
    }
    public boolean getnxt(){
        showContact();
        if((OffsetSize + LimitSize) > totalRecs)
            return true;
        else
            return false;
    }
}

 
Gopal ChatGopal Chat
Thanks
 
Steven NsubugaSteven Nsubuga
Do mark your question as resolved if my answer helped. Thanks!