You need to sign in to do that
Don't have an account?
Urgent Help Needed!!!!!!! StandardSetController pagination not working properly
Hi,
I am trying to display the cases based on option selected by the user. I have two options open incidents and closed incidents. By default it will display open incidents. when user selects closed incidents it should display all the closed incidents. I somehow managed to build this. But the pagination is not working properly. For the datatable to refresh I have seen in other posts, that we should not use if(con==null) -- this will not refresh the table. I have commented that part. The moment I have commented that line in my controller, pagination is not working. Could anyhelp me with this issue. Below is my visaluforce page and the controller :
<apex:page sidebar="false" controller="MyIncidentsPageController"> <script> var val; function changeCaseType(changedvalue){ val = changedvalue.value; setCaseStatusMethod(val); } </script> <apex:form > <apex:outputPanel > <apex:selectRadio value="{!caseType}" onchange="changeCaseType(this)"> <apex:selectOptions value="{!items}"> </apex:selectOptions> </apex:selectRadio> </apex:outputPanel> <apex:actionFunction action="{!setCaseStatusMethod}" name="setCaseStatusMethod"> </apex:actionFunction> <apex:outputPanel style="padding:10px;display:block;" id="caseList"> <apex:dataTable value="{!Cases}" var="OI" headerClass="header" style="border-style:solid;border-width:2px;border-color:#c8c8c8;" rowClasses="odd,even" width="100%"> <apex:column headerValue="Incident" style="padding:10px;"> <apex:outputText >{!OI.CaseNumber}</apex:outputText> </apex:column> <apex:column value="{!OI.Created__c}" headerValue="Created" style="padding:10px;color:#2f627f;"/> <apex:column value="{!OI.Modified__c}" headerValue="Modified" style="padding:10px;color:#2f627f;"/> <apex:column value="{!OI.Priority}" headerValue="Priority" style="padding:10px;color:#2f627f;"/> <apex:column value="{!OI.Productweb__c}" headerValue="Product" style="padding:10px;color:#2f627f;"/> <apex:column value="{!OI.Submitted_By__c}" headerValue="Submitted By" style="padding:10px;color:#2f627f;"/> <apex:column value="{!OI.Subject}" headerValue="Subject" style="padding:10px;color:#2f627f;"/> <apex:column value="{!OI.Status}" headerValue="Status" style="padding:10px;color:#2f627f;"/> </apex:dataTable> <apex:panelGrid columns="3" style="float:right;" id="links"> <apex:commandLink action="{!previous}" rendered="{!hasPrevious}" style="padding:12px;">Previous</apex:commandlink> <apex:outputLabel rendered="{!(hasPrevious && hasNext)}" >|</apex:outputLabel> <apex:commandLink action="{!next}" rendered="{!hasNext}" style="padding:12px;">Next</apex:commandlink> </apex:panelGrid><br/> </apex:outputPanel> <apex:outputpanel style="float:right;display:block;margin-right:7px;padding-top:2px;"> </apex:outputPanel> </apex:form> </apex:page>
Here is my controller
public with sharing class MyIncidentsPageController { public List<Case> caseList {get;set;} String caseType; public String caseStatus {get;set;} public String getcaseType(){ return caseType; } public void setcaseType(String caseType){ this.caseType = caseType; } public PageReference setCaseStatusMethod(){ caseStatus = caseType; return null; } public MyIncidentsPageController(){ caseType='Open'; caseStatus='Open'; } public List<SelectOption> getItems(){ List<SelectOption> options = new List<SelectOption>(); options.add(new SelectOption('Open','Open Incidents')); options.add(new SelectOption('Closed','Closed Incidents')); return options; } public ApexPages.StandardSetController con{ get{ // if(con==null){ con = new ApexPages.StandardSetController(Database.getQueryLocator([select Id,Subject,CaseNumber, Resolution__c,AccountId, Status, Priority,Productweb__c, Created__c,Modified__c,Submitted_By__c,CreatedDate from Case where status=:caseStatus order by CreatedDate desc])); con.setPageSize(10); // } return con; } set; } public Boolean hasNext{ get{ return con.getHasNext(); } set; } public Boolean hasPrevious { get{ return con.getHasPrevious(); } set; } public void next(){ con.next(); } public void previous(){ con.previous(); } public List<Case> getCases(){ caseList = con.getRecords(); return caseList; } }
Thanks in advance.
I have commented that part since I want the list to be refreshed upon my selection in the radio button.
I got it worked: You can find the solution at the below link
http://boards.developerforce.com/t5/Visualforce-Development/Urgent-Help-Needed-StandardSetController-pagination-not-working/td-p/268007
All Answers
I'm guessing you've based your example on Jeff's Blog
http://blog.jeffdouglas.com/2009/07/14/visualforce-page-with-pagination/
The code looks okay, save for the con== null check, which you have commented in your standardsetcontroller getter - any reason for this?
I have commented that part since I want the list to be refreshed upon my selection in the radio button.
I got it worked: You can find the solution at the below link
http://boards.developerforce.com/t5/Visualforce-Development/Urgent-Help-Needed-StandardSetController-pagination-not-working/td-p/268007