I'm trying to add a filter to my VisualForce page, with the following code:
VisualForce Code:
<apex:page controller="CaseController" sidebar="true">
<apex:form id="frm">
<apex:selectList size="1" value="{!getcasetype}" >
<apex:selectOptions value="{!casestatus}"> </apex:selectOptions>
<apex:actionSupport event="onchange" action="{!displaycaselist}"/>
</apex:selectList>
<apex:outputLabel id="pnl1" >
<apex:pageBlock >
<apex:pageBlockTable value="{!caselst}" var="c">
<apex:column headerValue="Case Number">
<apex:outputLink value="/{!c.id}"><apex:outputText value="{!c.CaseNumber}" /></apex:outputLink>
</apex:column>
<apex:column value="{!c.Contact.Name}"/>
<apex:column value="{!c.Days_Open__c}"/>
<apex:column value="{!c.Subject}"/>
<apex:column value="{!c.Status}"/>
<apex:column value="{!c.Type}"/>
<apex:column value="{!c.Priority}"/>
<apex:column value="{!c.Day_Created__c}"/>
</apex:pageBlockTable>
</apex:pageBlock>
</apex:outputLabel>
</apex:form>
</apex:page>
Apex Code
public class CaseController
{
public string getcasetype{get;set;}
public list<case> caselst{get;set;}
public CaseController()
{
caselst = Database.query(
'SELECT CaseNumber,Contact.Name,Days_Open__c,Subject,Status,Type, Priority, Day_Created__c FROM Case ' +
'WHERE status=:getcasetype ');
}
public void onLoad()
{
}
public list<selectoption>getcasestatus()
{
list<selectoption>selectopt=new list<selectoption>();
selectopt.add(new selectoption('Open','Open'));
selectopt.add(new selectoption('Closed','Closed'));
return selectopt;
}
public void displaycaselist()
{
caselst=new list<case>();
caselst=[SELECT CaseNumber,Contact.Name,Days_Open__c,Subject,Status,Type, Priority, Day_Created__c FROM Case WHERE status=:getcasetype AND Owner.Name != 'Dr Sickguy'];
}
}
However when the page loads, the list isn't updated until after I change the filter value in the drop-down. I know this is because of the event="onchange" attribute in the element, but I can't find a way to make it load on page load. Adding an event="onLoad" doesn't seem to work, and action methods in the page element don't seem to work when I call displayCaseList();
Any ideas? Many thanks.
System.debug()
at yourdisplaycaselist
method and tried pageaction={!displaycaselist}
?.