+ Start a Discussion
Brendan DunhamBrendan Dunham 

VisualForce Page Doesn't Display a List of Records or Any Records BUT it can Display the List Size

**VisualForce** page not displaying a list of records - title says it all.

How do I get the **VF** page to display the records that it is obviously counting (as it says **1-15** of **7549** records).


The non-working page looks like this:


Wells page - '*Wells*' page


However, this is what we want it to look like (the one that we currently have working!):

Working modems page - '*Modems*' page (I blacked out some fields, as the company we work for may not want this information disclosed)


My team is working on a salesforce.com application and we have an object, '*Modem*', that contains approximately **7,500** records.

# **ModemController** #

We have created a custom controller, **ModemController**:

public class ModemController {

    public apexpages.standardsetcontroller con {get;set;}
    public Integer noOfRecords{get; set;}
    public Integer size{get; set;}
    public Modem__c modems {get; set;}
       
    public List<Modem__c> AllSearchModems
    {
        get
        {
            if (con!= null)
                return (List<Modem__c>)con.getRecords();
            else
                return null;
        }
        set;
    }
   
    public ModemController() {
        AllSearchModems = new List<Modem__c>();
        modems = new Modem__c();
       
        String Name = ApexPages.currentPage().getParameters().get('Name');
        List<Modem__c> modems = [SELECT Name FROM Modem__c WHERE ID= :Name];
    }
   
    public PageReference save()
    {
        update modems;
        return new PageReference('/' + modems.Name);
    }
   
   
    public ApexPages.StandardSetController setCon {
        get{
            if(setCon == null){
                size = 15;
                string queryString = 'SELECT Name, ModemActive__c, ModemCarrier__c, ModemCarrierData__c, DataPlanName__c, ESNNumber__c, ModemICCID__c, IMEINumber__c, IMSINumber__c, ModemIPEXT__c, ModemJob__c, ModemManufacturer__c, ModemModel__c, ModemPhone__c, PortForwarding__c, ModemIPPort__c, SIMNumber__c, ModemIPSlave__c, ModemStaticIP__c, ModemFirmwareVersion__c FROM Modem__c ORDER BY Name';
                setCon = new ApexPages.StandardSetController(Database.getQueryLocator(queryString));
                setCon.setPageSize(size);
                noOfRecords = setCon.getResultSize();
            }
            return setCon;
        }
        set;
    }
   
    public List<Modem__c> getModems()
    {
        List<Modem__c> modemList = new List<Modem__c>();
        for(Modem__c w : (List<Modem__c>)setCon.getRecords())
           modemList.add(w);
        return modemList;
    }
       
    public PageReference refresh() {
        setCon = null;
        getModems();
        setCon.setPageNumber(1);
        return null;
    }
   
   
   
    public PageReference Search()
    {
        if (modems.Name != null)
        {
            con = new ApexPages.StandardSetController(Database.getQueryLocator([SELECT Name, ModemActive__c,ModemCarrier__c,ModemCarrierData__c,DataPlanName__c,ESNNumber__c,ModemICCID__c, IMEINumber__c,IMSINumber__c,ModemIPEXT__c,ModemJob__c, ModemManufacturer__c,ModemModel__c,ModemPhone__c, PortForwarding__c, ModemIPPort__c,SIMNumber__c,ModemIPSlave__c,ModemStaticIP__c, ModemFirmwareVersion__c FROM Modem__c  Modem__c WHERE Name= :modems.Name])); 
            con.setPageSize(10);
        }
        else
        {
            con = null;
        }
        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();
    }
    }



# Custom **VF** page for '*Wells*' page #
Here is the custom **visualforce** page for the '*Wells*' page:

 
<apex:page controller="ModemController">
    <apex:form >
        <apex:pageBlock id="pb">         
            <apex:pageBlockTable value="{!Modems}" var="m">   
                <apex:column value="{!m.Name}" />  
                <apex:column value="{!m.ModemManufacturer__c}"/>
                <apex:column value="{!m.ModemModel__c}"/>
                <apex:column value="{!m.ModemICCID__c}"/>
                <apex:column value="{!m.ModemIPEXT__c}"/>
                <apex:column value="{!m.ModemCarrier__c}"/>
                <apex:column value="{!m.ModemActive__c}"/>
            </apex:pageBlockTable>
             <apex:panelGrid columns="7">
                <apex:commandButton status="fetchStatus" reRender="pb" value="|<" action="{!first}" disabled="{!!hasPrevious}" title="First Page"/>
                <apex:commandButton status="fetchStatus" reRender="pb" value="<" action="{!previous}" disabled="{!!hasPrevious}" title="Previous Page"/>
                <apex:commandButton status="fetchStatus" reRender="pb" value=">" action="{!next}" disabled="{!!hasNext}" title="Next Page"/>
                <apex:commandButton status="fetchStatus" reRender="pb" value=">|" action="{!last}" disabled="{!!hasNext}" title="Last Page"/>
                <apex:outputText >{!(pageNumber * size)+1-size}-{!IF((pageNumber * size)>noOfRecords, noOfRecords,(pageNumber * size))} of {!noOfRecords}</apex:outputText>
                <apex:commandButton status="fetchStatus" reRender="pb" value="Refresh" action="{!refresh}" title="Refresh Page"/>
                <apex:outputPanel style="color:#4AA02C;font-weight:bold">
                <apex:actionStatus id="fetchStatus" startText="Fetching..." stopText=""/>
                </apex:outputPanel>
            </apex:panelGrid>          
              
        </apex:pageBlock>
    </apex:form>
</apex:page>



This **controller** works for other tabs, (see the '*Wells*' page, it uses an identical controller and it works!) but does not work for '*Modems*' page.

We see that '*Modems*' page is at least reading in the **7,549** records (by looking at a variable noOfRecords to count how many there are) but not displaying them.  I have even tried adding **LIMIT** to the **SOQL** query, to no avail.  (limited it to 2,000, 1999, 1001, 1000, 999, and even 30,20, and 10)



I don't think the amount of records is the issue, I could be wrong.

If anyone has any tips, it would be greatly appreciated!



# WellController #
If anyone requests, here is the working code for the '*Wells*' page, both **VisualForce** and **Apex** code:
*WellController*:
    
public class WellController {

    public apexpages.standardsetcontroller con {get;set;}
    public Integer noOfRecords{get; set;}
    public Integer size{get; set;}
    public Well__c wellz {get; set;}
       
    public List<Well__c> AllSearchWells
    {
        get
        {
            if (con!= null)
                return (List<Well__c>)con.getRecords();
            else
                return null;
        }
        set;
    }

   
    public WellController() {
        AllSearchWells = new List<Well__c>();
        wellz = new Well__c();
       
        String Name = ApexPages.currentPage().getParameters().get('Name');
        List<Well__c> wellz = [SELECT Name FROM Well__c WHERE ID = :Name];
    }
   
    public PageReference save()
    {
        update wellz;
        return new PageReference('/' + wellz.Name);
    }
   
   
    public ApexPages.StandardSetController setCon {
        get{
            if(setCon == null){
                size = 15;
                string queryString = 'SELECT Name, WellLocActivationDate__c, Active__c, AntennaType__c, WellLocBillTo__c, CompanyName__c, CompanyName_del__c, WellLocCompanyName__c, ConnectedCarrier__c, ContactReponsible__c, DataNetwork__c, WellLocSPOCDataPlan__c, WellSiteEquipHistory__c, WellLoclPD__c, WellLocKillDate__c, ModemConnectedTo__c, Name__c, WellLocModemSerial__c, SignalQuality__c, SignalStrength__c, SimCardNumber__c, TechResponsible__c, Action__c, ActionDate__c, WellLocName__c, WellLocOwningCompanyName__c FROM Well__c ORDER BY Name';
                setCon = new ApexPages.StandardSetController(Database.getQueryLocator(queryString));
                setCon.setPageSize(size);
                noOfRecords = setCon.getResultSize();
            }
            return setCon;
        }
        set;
    }
   
    public List<Well__c> getWells()
    {
        List<Well__c> wellList = new List<Well__c>();
        for(Well__c w : (List<Well__c>)setCon.getRecords())
            wellList.add(w);
        return wellList;
    }
       
    public PageReference refresh() {
        setCon = null;
        getWells();
        setCon.setPageNumber(1);
        return null;
    }
   
   
   
    public PageReference Search()
    {
        if (wellz.Name != null)
        {
            con = new ApexPages.StandardSetController(Database.getQueryLocator([SELECT Name, WellLocActivationDate__c, Active__c, AntennaType__c, WellLocBillTo__c, CompanyName__c, CompanyName_del__c, WellLocCompanyName__c, ConnectedCarrier__c, ContactReponsible__c, DataNetwork__c, WellLocSPOCDataPlan__c, WellSiteEquipHistory__c, WellLoclPD__c, WellLocKillDate__c, ModemConnectedTo__c, Name__c, WellLocModemSerial__c, SignalQuality__c, SignalStrength__c, SimCardNumber__c, TechResponsible__c, Action__c, ActionDate__c, WellLocName__c, WellLocOwningCompanyName__c FROM Well__c  Well__c where Name = :wellz.Name])); 
            con.setPageSize(10);
        }
        else
        {
            con = null;
        }
        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 PageReference make()
    {
   
      return Page.wellCreate;
    }
   

 
    public void first() {
        setCon.first();
    }
 
    public void last() {
        setCon.last();
    }
 
    public void previous() {
        setCon.previous();
    }
 
    public void next() {
        setCon.next();
    }
    }




# **VF** page - '*Wells*' #

And the **VisualForce** page associated with the '*Wells*' object:


<apex:page controller="WellController">
    <apex:form >
        <apex:pageBlock title="Wells" id="pb">
            <apex:pageBlockSection >
           
            <apex:commandButton action="{!make}" value="Create New"/>
          
        </apex:pageBlockSection>
            <apex:pageBlockTable value="{!Wells}" var="w">
                <apex:column headerValue="Well Name">
                    <apex:outputLink value="/apex/wellEdit?id={!w.id}">{!w.WellLocName__c}</apex:outputLink>
                </apex:column>
                <apex:column value="{!w.WellLocModemSerial__c}" />
                <apex:column value="{!w.WellLocCompanyName__c}" />
                <apex:column value="{!w.WellLocOwningCompanyName__c}" />
                <apex:column value="{!w.WellLocBillTo__c}" />
                <apex:column value="{!w.Active__c}" />
            </apex:pageBlockTable>
            <apex:panelGrid columns="7">
                <apex:commandButton status="fetchStatus" reRender="pb" value="|<" action="{!first}" disabled="{!!hasPrevious}" title="First Page"/>
                <apex:commandButton status="fetchStatus" reRender="pb" value="<" action="{!previous}" disabled="{!!hasPrevious}" title="Previous Page"/>
                <apex:commandButton status="fetchStatus" reRender="pb" value=">" action="{!next}" disabled="{!!hasNext}" title="Next Page"/>
                <apex:commandButton status="fetchStatus" reRender="pb" value=">|" action="{!last}" disabled="{!!hasNext}" title="Last Page"/>
                <apex:outputText >{!(pageNumber * size)+1-size}-{!IF((pageNumber * size)>noOfRecords, noOfRecords,(pageNumber * size))} of {!noOfRecords}</apex:outputText>
                <apex:commandButton status="fetchStatus" reRender="pb" value="Refresh" action="{!refresh}" title="Refresh Page"/>
                <apex:outputPanel style="color:#4AA02C;font-weight:bold">
                <apex:actionStatus id="fetchStatus" startText="Fetching..." stopText=""/>
                </apex:outputPanel>
            </apex:panelGrid>
        </apex:pageBlock>
    </apex:form>
</apex:page>

Thanks in advance!
Shashikant SharmaShashikant Sharma
I think you are calcualting noOfRecords by this 

setCon.setPageSize(size);
043
                noOfRecords = setCon.getResultSize();

means setting the page size first. You might need to do a separate query juse

[Select Id From Modem__c].size() or an aggregate query for Count(ID) to get total number of records.