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
#DD#DD 

I want to provide pagination in my VF page but am getting errror

Hi,

I want to provide pagination in my VF page but am getting errror;

Content cannot be displayed: MALFORMED_QUERY: CampaignMembers WHERE ContactId = :tmpVar1) FROM Campaign ^ERROR at Row:1:Column:83rule parseSingleWhere failed predicate: {c != null}?

VF Page;
<apex:page standardController="Contact" sidebar="false" recordSetVar="Contacts" extensions="CampaignRecords"> <script type="text/javascript"> var win; function openNewPage(contactID){ var win='/_ui/common/data/LookupPage?lkpr='+contactID+'&lktp=701&enableScopes=1&addToCampaign=1''&retURL='+campaignID; openIntegration(win, 'height=500,width=700,location=no,resizable=yes,toolbar=no,status=no,menubar=no,scrollbars=1', 1) //openIntegration(win, 'height=500,width=700,location=no,resizable=yes,toolbar=no,status=no,menubar=no,scrollbars=1', 1) //alert(contentId); // window.opener.location.reload(); return false; } // var previousOnload = window.onload; // window.onload = function() { if (previousOnload) { win.close(); } } </script> <apex:form > <!-- <apex:sectionHeader title="Campaign History" subtitle=""/> <apex:pageBlockSection >Campaign History</apex:pageBlockSection>--> <apex:pageBlock id="campaigns"> <apex:pageBlockButtons location="top"> <apex:commandButton value="Type All" reRender="TabRefresh" > <apex:param name="blTypeAll" assignTo="{!bltypeEmail}" value="TypeAll"/> </apex:commandButton> <apex:commandButton value="Type Email" reRender="TabRefresh" > <apex:param name="blEmail" assignTo="{!bltypeEmail}" value="Email"/> </apex:commandButton> <apex:commandButton value="Type Others" reRender="TabRefresh" > <apex:param name="bltypeEmail" assignTo="{!bltypeEmail}" value="typeOthers"/> </apex:commandButton> <apex:commandButton value="Add to Campaign" onclick="openNewPage('{!Id}')" > </apex:commandButton> </apex:pageBlockButtons> <apex:outputPanel id="TabRefresh"> <apex:pageBlockTable value="{!campgn}" var="o" rendered="{!NOT(ISNULL(campgn))}"> <apex:column value="{!o.Name}"/ > <apex:column value="{!o.Status}"/ > <apex:column value="{!o.Type}"/ > </apex:pageBlockTable> <apex:panelGrid columns="4"> <apex:commandButton action="{!first}" value="|>"/> <apex:commandButton rendered="{!HasPrevious}" action="{!Previous}" value="<"/> <apex:commandButton rendered="{HasNext}" action="{!next}" value=">"/> <apex:commandButton action="{last}" value=">|"/> </apex:panelGrid> </apex:outputPanel> </apex:pageBlock> </apex:form> </apex:page>

Controller Extn;
public with sharing class CampaignRecords {
    
    public Contact objContact {get;set;}
    public String bltypeEmail {get; set;}
    public String currentContRecordId {get;set;}
    private List<Campaign> campgn {get; set;}
    private List<Campaign> campAll {get;set;}
    public List<Campaign> typeEmailOthers {get; set;}
    //public ApexPages.StandardSetController setCon {get; set;}
    //Public Integer size{get;set;}
    //Public Integer noOfRecords{get; set;}
    
    public ApexPages.StandardSetController setCon {
        get {
            if(setCon == null) {
                setCon = new ApexPages.StandardSetController(Database.getQueryLocator(
                    [Select Id, Name, Type, Status,(select name from CampaignMembers where ContactId = :currentContRecordId) from Campaign]));
                    //[Select Id, Name, Type, Status from Campaign]));                    
            }
            return setCon;
        }
        set;
    }
    
    
    public CampaignRecords(ApexPages.StandardSetController controller) {
        controller.setPageSize(10);
        currentContRecordId  = ApexPages.CurrentPage().getparameters().get('id');
        objContact= [select id,accountid from contact where id = :currentContRecordId] ;
        system.debug('campaign record='+objContact.ID);
    }
    
    public List<Campaign> getCampgn(){
        //List<Campaign> campgn = new List<Campaign>();
       /* for(Campaign c : (List<Campaign>)setCon.getRecords())
            campAll.add(c);*/
              
        if(bltypeEmail  == 'TypeAll' || bltypeEmail  == null || bltypeEmail   == '' || bltypeEmail == ' ') {
            for(Campaign c : (List<Campaign>)setCon.getRecords())
                //if(c.Type != 'Email')
                    campgn.add(c);
            
            //campgn = [Select Id, Name, Type, Status,(select name from CampaignMembers where ContactId = :objContact.Id) from Campaign];
            bltypeEmail ='';
        }
     /*   else  if(bltypeEmail == 'Email'){
            campgn = [Select Id, Name, Type, Status,(select name from CampaignMembers where ContactId =:currentContRecordId) from Campaign where Type ='Email'];
            bltypeEmail ='';
        } 
        else if(bltypeEmail == 'typeOthers')
        {
            campgn = [Select Id, Name, Type, Status,(select name from CampaignMembers where ContactId =:currentContRecordId) from Campaign where Type !='Email'];
            bltypeEmail ='';
        }*/
        system.debug('under type all'+campgn);        
        return campgn ;
    }
        public pageReference refresh() {
        setCon = null;
        getCampgn();
        setCon.setPageNumber(1);
        return null;
    }
     
    public Boolean hasNext {
        get {
            return setCon.getHasNext();
        }
        set;
    }
    public Boolean hasPrevious {
        get {
            return setCon.getHasPrevious();
        }
        set;
    }
  
    public Integer pageNumber {
        get {
            return setCon.getPageNumber();
        }
        set;
    }
  
    public void first() {
        setCon.first();
    }
  
    public void last() {
        setCon.last();
    }
  
    public void previous() {
        setCon.previous();
    }
  
    public void next() {
        setCon.next();
    }
}
Amit Chaudhary 8Amit Chaudhary 8
Please reffer below blog i hope that will help u
http://amitsalesforce.blogspot.in/search/label/Pagination

Pass your query like below code

 query = 'Select name ,id, phone from Account '+strFilter+ ' limit 1000';
            System.debug('Query ---->'+ query );
            con = new ApexPages.StandardSetController(Database.getQueryLocator(query)); 
            con.setPageSize(2);