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
Pradeep dPradeep d 

pagination with wrapperclass using standardsetcontroller

Not refreshing the wrapper list here
public class TouchContact{

    //Variable declaration
    public Contact con {
    get;
    set;
    }
    Public Integer noOfRecords{get; set;}
    Public Integer size{get;set;}
    public boolean selectedAllProperties {
    get;
    set;
    }
    public List<contactWrapperCls> lstConWrapper {            // overall list
    get;
    set;
    }
    public List <contactWrapperCls> lstConWrapper1 {          // page list
    set;
    get;
    }
    public List <contactWrapperCls> lstConWrapper2 {          // Selected records list
    set;
    get;
    }
    public set < id > DummyIds;                               // Dummy object Ids
    public List < SelectOption > options {
    get;
    set;
    }
    public List < SelectOption > operatorOptions {
    get;
    set;
    }
    public static string selectedOperatorOption {
    get;
    set;
    }
    public static string SelectedOption {
    get;
    set;
    }
    public string enteredText {
    get;
    set;
    }
    public string selectedDataType {
    get;
    set;
    }
    public Map < string, string > checkDataTypeMap {
    get;
    set;
    }
    Public List<SelectOption> Slist {
    get;
    set;
    }
    public string selectedvalue {
    get;
    set;
    }
    public List<Contact> conlist{
    get;
    set;
    }
    Public List < Contact > Createconlist {
    set;
    get;
    }
 
    public Map<id,Contact> Cmap{
    get;
    set;
    }
    public Set<Id> Keys{
    get;
    set;
    }
    public date dat{
    get;
    set;
    }
    public date to{
    get;
    set;
    }
    public ApexPages.StandardSetController stdCtrl{get;set;}
    public Integer counter = 0; //TO track the number of records parsed
    public Integer limitSize = 100; //Number of records to be displayed
    public Integer totalSize {
    set;
    get;
    }
    
     
    public transient Map < String, Schema.SObjectType > schemaMap = Schema.getGlobalDescribe();
    
    public TouchContact(ApexPages.StandardController stdController){
         
      con =  new contact();
      options = new List < SelectOption > ();
      checkDataTypeMap = new Map < String, string > ();
      operatorOptions = new List < SelectOption > ();
    
      
  //To fetch the Contact fields by Describe call
      Selectoption sv = new SelectOption('--Please Select--', '--Please Select--');
      Options.add(sv);
      Map < String, Schema.SObjectField > ContactFieldsMap = SchemaMap.get('Contact').getDescribe().fields.getMap();
      for (Schema.SObjectField sField: ContactFieldsMap.Values()) {      
          schema.describefieldresult fieldName = sfield.getDescribe();
          Schema.DisplayType fielddataType = sfield.getDescribe().getType();
          string fieldType = string.valueOf(fielddataType);
          SelectOption sp = new SelectOption(fieldName.getName(), fieldName.getName());
          checkDataTypeMap.put(fieldName.getName(), fieldType);
          options.add(sp);
          options.sort();      
      }  
  //Add the filter conditons feteched from Custom settings to show in picklist
      SelectOption selOpt = new SelectOption('--Please Select--', '--Please Select--');
      operatorOptions.add(selOpt);
      List < CustomCondition1__c > filetConditions = CustomCondition1__c.getall().values();
      for (CustomCondition1__c Fcon: filetConditions) {      
          SelectOption Fsp = new SelectOption(Fcon.Name, Fcon.Name);
          operatorOptions.add(Fsp);
          operatorOptions.sort();          
     }
  }
 
  public Integer countr = 0 ; 
  public void Search(){
      Integer pageSize ;
      size = 10; 
      Integer totsize = 500;  
      Integer pageNumber ; 
      system.debug('From Date :******** '+con.datefield__c);
      system.debug('TO Date :******** '+con.To_date__c);
      system.debug('LastSent Date :******** '+con.Last_Sent_Date__c);
      system.debug('SelectedOption :******** '+SelectedOption);
      system.debug('Selected Operator :******** '+selectedOperatorOption);
        lstConWrapper = new List<contactWrapperCls>(); 
      lstConWrapper1 = new List<contactWrapperCls>();
      lstConWrapper2 = new List<contactWrapperCls>();
      
      datetime fromDate = con.datefield__c;
      datetime toDate = con.To_date__c;
      Date lastDate30 = System.today().addDays(-30);
      Date lastDate60 = System.today().addDays(-60);
      Date lastDate90 = System.today().addDays(-90);
      Cmap = new map<Id,contact>();
      conlist = new List<Contact>();
      string soql = 'SELECT id,LastName,AssistantName,AssistantPhone,Birthdate,Department,Description,Email,Fax,';
      soql      += 'HomePhone,MailingAddress,MailingCity,MailingCountry,MailingPostalCode,MailingState,datefield__c,To_date__c,' ;
      soql      += 'MailingStreet,MobilePhone,Name,firstname,OtherAddress,OtherCity,OtherCountry,OtherPhone,OtherPostalCode,';
      soql      += 'OtherState,OtherStreet,Account.Name,LastModifiedDate,Phone,Title,Mail_Sent_Date__c,' ;
      soql      += '(SELECT Assistant_Name__c,Assistant_Phone__c,Birthdate__c,Contact__c,CreatedById,'
                + 'CreatedDate,Department__c,Description__c,Email__c,Fax__c,First_Name__c,Home_Phone__c,Id,IsDeleted,Mailing_City__c,'
                +'Mailing_Country__c,Mailing_State_Province__c,Mailing_Street__c,Mailing_Zip_Postal_Code__c,Mobile_Phone__c,Name,'
                +'Other_City__c,Other_Country__c,Other_Phone__c,Other_State_Province__c,Other_Street__c,Other_Zip_Postal_Code__c,'
                +'OwnerId,Phone__c,Title__c from Cons__r) From Contact  ';
      string whereConditions = 'where ';
      string resultQuery = '';
      if(con.datefield__c !=null && con.To_date__c !=null){          
          resultQuery = soql + whereConditions+   ' LastModifiedDate >= :fromDate AND LastModifiedDate <= :toDate' ;
        
      }
      if(Con.Last_Sent_Date__c !='--None--'){
          resultQuery =  getLastsentDate(Con.Last_Sent_Date__c ,resultQuery) ;
      }
      if(string.isNotBlank(SelectedOption) && string.isNotBlank(selectedOperatorOption) && string.isNotBlank(enteredText)){
          resultQuery = getOperatorSelection(SelectedOption,selectedOperatorOption,resultQuery,enteredText) ;
      }
      //Hit the database
         
          conlist = database.query(resultQuery  +' LIMIT 500' ); 
                 
          system.debug('conlist : ' + conlist);
          
          stdCtrl =  new ApexPages.StandardSetController(conlist);
          stdCtrl.setPageSize(size);               
          noOfRecords = stdCtrl.getResultSize();
          pageNumber = stdCtrl.getPageNumber();
          system.debug(pageNumber + 'page Number');
         system.debug('noOfRecords '+ noOfRecords); 
         
           for(contact con :(List<contact>)stdCtrl.getRecords()){
                lstConWrapper.add(new contactWrapperCls(false,con));  
                }
              
        system.debug('lstConWrapper is 9((((((((((((:'+lstConWrapper.size());      
    }
    private string getLastsentDate(string lastSentDate,string dynamicSoql){
        
        if(con.Last_Sent_Date__c =='30 days')
            dynamicSoql = dynamicSoql + ' and Mail_Sent_Date__c < :lastDate30';
        if(con.Last_Sent_Date__c =='60 days')
            dynamicSoql = dynamicSoql + ' and Mail_Sent_Date__c < :lastDate60';
        if(con.Last_Sent_Date__c =='90 days')
            dynamicSoql = dynamicSoql + ' and Mail_Sent_Date__c < :lastDate90';
        if(con.Last_Sent_Date__c =='Contacted')
            dynamicSoql = dynamicSoql + ' and Mail_Sent_Date__c != null';
        if(con.Last_Sent_Date__c =='Not Contacted')
            dynamicSoql = dynamicSoql + ' and Mail_Sent_Date__c = null';
        
        return dynamicSoql;
    }
    private string getOperatorSelection(string SelectedOption,string selectedOperator,string dynamicSoql,string enteredText){
        string selectedDataType = checkDataTypeMap.get(SelectedOption);
        if (selectedOperatorOption == 'Equal to'){
            if(selectedDataType == 'BOOLEAN' || selectedDataType == 'Id')
                dynamicSoql = dynamicSoql + ' AND '+ SelectedOption + '= ' + enteredText; 
            else
                dynamicSoql = dynamicSoql + ' AND '+ SelectedOption + '= ' + '\'' + enteredText + '\'';
        }
        if (selectedOperatorOption == 'Not equal to'){
            if(selectedDataType == 'BOOLEAN' || selectedDataType == 'Id')
                dynamicSoql = dynamicSoql +' AND' + SelectedOption + '!= ' + enteredText;
            else
                dynamicSoql = dynamicSoql + ' AND '+ SelectedOption + '!= ' + '\'' + enteredText + '\'';
        }
        return dynamicSoql;        
    }
    
    //=============pagination test==================//
   
 
    //==============================================//
    
  
    
   
    
    //================= Selected Records==============//
    
    public pageReference selectedRecords() {
        Map<Id, Contact>contactmap = New Map<Id, Contact>();
        List<Contact>contactscupdate = New List<Contact>();
        Set<id>lstSelectedCons = new set<Id>();
        List<Contact>SelectedDc = new List < Contact > ();
        if(!lstConWrapper2.isEmpty()){
        for(contactWrapperCls contactWrapperClsobj : lstConWrapper2){
           if(contactWrapperClsobj.isSelected == true){
           system.debug(contactWrapperClsobj);
     //       lstSelectedCons.add(contactWrapperClsobj.Id);
     //       SelectedDc.add(contactWrapperClsobj);
    }           
    }     
    }     
        return null;
    }
    
    //=================Wrapper Class==================//
    
    public class contactWrapperCls{
        public boolean isSelected {get;set;}        
        public contact objContact {get;set;}
        
        public contactWrapperCls(boolean isSel,contact con){
            this.isselected = isSel;
            this.objContact = con;            
        }
    }
    public void selectAllChks(){
        selectedAllProperties = true;
        
    }  
     public pageReference refresh() {
        //stdCtrl = null;
        //getAccounts();
        stdCtrl.setPageNumber(1);
        return null;
    }
 
     
    public Boolean hasNext {
        get {
            return stdCtrl.getHasNext();
        }
        set;
    }
    public Boolean hasPrevious {
        get {
            return stdCtrl.getHasPrevious();
        }
        set;
    }
   
    public Integer pageNumber {
        get {
            return stdCtrl.getPageNumber();
        }
        set;
    }
   
    public void first() {
        stdCtrl.first();
    }
   
    public void last() {
        stdCtrl.last();
    }
   
    public void previous() {
        stdCtrl.previous();
    }
   
    public void next() {
      stdCtrl.next();
        //system.debug('hello%%%%%%%%%%%%%% :'+stdCtrl.);
    }
 
}

==================vf=======

<apex:page standardController="Contact" docType="Html-5.0" sidebar="false" extensions="TouchContact" >
    <style>
        .spacer15 {
          height: 10px;
        }
    </style>
   <head>      
       <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" />
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>       
   </head>
   <div class="container">
      <ul class="nav nav-pills">
         <li><a data-toggle="pill" href="#adminSetup">Admin Setup</a></li>
         <li><a data-toggle="pill" href="#sendEmail">Send Email</a></li>
      </ul>
      <div class="tab-content">
         <div id="adminSetup" class="tab-pane fade in active">
         <br/>
         <br/>
         <h4>Installation Steps </h4> <br/>
         <p>
         1. Go to sites --> Click on New -->
         </p>
         </div>
         <div id="sendEmail" class="tab-pane fade">
          <br/>
          <br/>
            <apex:form > 
                 <apex:actionFunction name="isSelectAllItem" action="{!selectAllChks}"  rerender="pb">
                    <apex:param name="isSelectedALL" value="" assignTo="{!selectedAllProperties}"/>
                </apex:actionFunction>
                   <div class="row">                                                                  
                       <div class="col-sm-2" >
                           <label for="FrmDate">Form Date:</label> 
                        </div> 
                         <div class="col-sm-4" >  
                         <apex:inputField value="{!Con.datefield__c}" styleClass="form-control" style="width:50%;" />                                                                                 
                        </div> 
                                                                    
                       <div class="col-sm-2" >
                          <label for="ToDate">To Date:</label> 
                         </div>
                         <div class="col-sm-4">
                         <apex:inputField value="{!Con.To_date__c}"  styleClass="form-control" style="width:50%;" />                                    
                     </div>
                   </div> 
                 <div class="spacer15">
                </div>
                <div class="row">
                     <div class="col-sm-2" >
                        <label for="LsentDate">Last Sent Date:</label>
                     </div>
                        <div class="col-sm-4" >
                           <apex:inputField value="{!Con.Last_Sent_Date__c}"  styleClass="form-control" style="width:50%;" />
                        </div>    
                         <div class="col-sm-2" >
                        <label for="LsentDate"> Enable Direct Send:</label>
                     </div>
                        <div class="col-sm-4" >
                           <apex:inputCheckbox value="{!Con.Direct_send__c}"  styleClass="form-control" style="width:50%;" />
                        </div>                  
                </div>
                 <div class="spacer15">
                </div>
                <div class="row">  
                    <div class="col-sm-2">
                        <label for="sField">Select Field:</label>  
                    </div>
                     <div  class="col-sm-4">                                                    
                         <apex:selectList value="{!SelectedOption}" size="1" styleClass="form-control" style="width:50%;"  >
                           <apex:selectOptions value="{!Options}"  />
                        </apex:selectList> 
                            </div> 
                     <div class="col-sm-2" >
                                         
                          <apex:selectList value="{!selectedOperatorOption}" size="1"  styleClass="form-control"  >
                           <apex:selectOptions value="{!operatorOptions}" >                  
                           </apex:selectOptions>
                        </apex:selectList>
                     </div>  
                    <div class="col-sm-2" >
                        <apex:inputText value="{!enteredText}" styleClass="form-control"   />
                     </div>
                </div> 
                 <div class="spacer15">
                 </div>
                   <div class="spacer15">
                </div>
                 <div style="float:None;align:center;margin-left:40%; "> 
                   <apex:commandButton value="Search" action="{!Search}" styleClass=" btn btn-primary" style="background:#236FBD; width:100px; font-size: 12px;" reRender="ContactList"  status="pageStatus" >    
                    <apex:actionStatus id="pageStatus">
                    <apex:facet name="start">
                    <apex:outputPanel >
                    <img src="/img/loading32.gif" width="25" height="25" />
                    <apex:outputLabel value="Loading..."/>
                    </apex:outputPanel>            
                    </apex:facet>
                    </apex:actionStatus>                      
                   </apex:commandButton>
                  </div> 
                    <div class="spacer15">
                </div>
                <div class="container" >
                 <apex:pageBlock id="ContactList" >             
                  <apex:outputPanel rendered="{! IF(lstConWrapper1!= null && lstConWrapper1.size !=0 , true, false)}">
                    <br/>
                <!-- count of selected items
                    <apex:outputLabel value="Total Number of Records :{!totalSize } " /> -->
                    </apex:outputPanel>
                    <br/> 
                <!--    
                    <apex:outputPanel id="ContactList" 
      rendered="{!conlist!= null && conlist.size > 0}" 
     >
         
    
   <apex:commandButton value="<<" disabled="{!DisablePreviousAccount}" 
        action="{!previousFirstAccount}" 
        reRender="ContactList,ps" styleclass="bluerund">  
   </apex:commandButton>

   <apex:commandButton value="<" disabled="{!DisablePreviousAccount}" 
         action="{!previousAccount}" 
       reRender="ContactList,ps"  styleclass="bluerund">  
   </apex:commandButton>

   <apex:commandButton value=">" disabled="{!DisableNextAccount}" 
         action="{!nextAccount}" 
       reRender="ContactList,ps"  styleclass="bluerund">
   </apex:commandButton>

   <apex:commandButton value=">>" disabled="{!DisableNextAccount}"
         action="{!nextLastAccount}"
       reRender="ContactList,ps"  styleclass="bluerund">  
   </apex:commandButton> 
   
   
                                     
</apex:outputPanel>
         -->              
      
                  <apex:pageBlockTable value="{!lstConWrapper}"  var="objCon" rendered="{! IF(lstConWrapper!= null && lstConWrapper.size !=0 , true, false)}">
                     <apex:column >
                        <apex:facet name="header"  >                            
                            <apex:inputCheckbox value="{!selectedAllProperties}" styleClass="checkbox" onclick="selectAllCheckboxes(this)" id="Headercheckbox" />                               
                        </apex:facet>                         
                           <apex:inputCheckbox value="{!objCon.isSelected}" styleClass="checkbox"   onclick="doCheckboxChange(this,'{!objCon.objContact.Id}')"  />                                                  
                     </apex:column>
                     <apex:column value="{!objCon.objContact.lastname}"/>
                     <apex:column value="{!objCon.objContact.firstname}"/>
                      <apex:column value="{!objCon.objContact.Account.Name}"/>
                     <apex:column value="{!objCon.objContact.email}"/>
                      <apex:column value="{!objCon.objContact.LastModifiedDate}"/>
                  </apex:pageBlockTable>    
                 <apex:pageBlockButtons >
                    <apex:commandButton value="Send Mail" action="{!selectedRecords}" reRender="ContactList"/>
                 </apex:pageBlockButtons>
                     <apex:panelgrid columns="7" rendered="{!if(lstConWrapper !=null,true,false)}" >
                <apex:commandbutton action="{!first}" disabled="{!!hasPrevious}" rerender="ContactList" status="fetchStatus" title="First Page" value="|<"></apex:commandbutton>
                <apex:commandbutton action="{!previous}" disabled="{!!hasPrevious}" rerender="ContactList" status="fetchStatus" title="Previous Page" value="<"></apex:commandbutton>
                <apex:commandbutton action="{!next}" disabled="{!!hasNext}" rerender="ContactList" status="fetchStatus" title="Next Page" value=">"></apex:commandbutton>
                <apex:commandbutton action="{!last}" disabled="{!!hasNext}" rerender="ContactList" status="fetchStatus" title="Last Page" value=">|"> </apex:commandbutton>
                 <apex:outputtext >{!(pageNumber * size)+1-size}-{!IF((pageNumber * size)>noOfRecords, noOfRecords,(pageNumber * size))} of {!noOfRecords}</apex:outputtext>
               <apex:commandbutton action="{!refresh}" rerender="pb" status="fetchStatus" title="Refresh Page" value="Refresh"></apex:commandbutton> 
                <apex:outputpanel style="color: #4aa02c; font-weight: bold;">
                    <apex:actionstatus id="fetchStatus" starttext="Fetching..." stoptext="">
                </apex:actionstatus>
             </apex:outputpanel>
           </apex:panelgrid>
            
        
         
               </apex:pageBlock>
                    
             </div>
            </apex:form>
         </div>
      </div>
   </div>
   <script>     
      function selectAllCheckboxes(obj){
        
        $(".checkbox").each(function(index, item){
            item.checked = obj.checked;
        });
        isSelectAllItem(obj.checked);
    }
    function doCheckboxChange(cb,itemId)
    {
        if(cb.selected==true){
            aSelectItem(itemId);
        }
        else{
            aDeselectItem(itemId);
        }        
    }  
   </script>
</apex:page>