First of I am not sure if you can get the Recently Viewed cases and all cases.
I managed to modify the code as below :
PAGE:
<apex:page controller="CompanyCasesQue" sidebar="true" showHeader="true">
<apex:form >
<apex:pageBlock title="My Cases">
<apex:outputLabel value="View:"/>
<apex:selectList value="{!filterId}" size="1">
<apex:actionSupport event="onchange" action="{!renderdiffview}" rerender="cases_table"/>
<apex:selectOptions value="{!items}"/>
</apex:selectList>
<apex:pageBlock >
<apex:pageBlockTable value="{!results}" var="c" rows="50" id="cases_table">
<apex:column >
<a target="_parent" href="/{!c.id}">{!c.CaseNumber}</a>
<apex:facet name="header">Case Number</apex:facet>
</apex:column>
</apex:pageBlockTable>
</apex:pageBlock>
</apex:pageBlock>
</apex:form>
</apex:page>
controller :
global class CompanyCasesQue {
public string FilterId{get;set;}
public list<case> results;
//constructors and variable declaration
public PageReference renderdiffview() {
Map<Id,string> Id_status_map = new map<Id,string>{'00BW0000000PeSVMA0' => 'New','00BW0000000PeSGMA0' => 'Closed'};
results = [select id,casenumber from case where status =: Id_status_map.get(filterId)];
return null;
}
public List<Case> getresults() {
return results;
}
public List<SelectOption> getItems() {
List<SelectOption> options = new List<SelectOption>();
options.add(new SelectOption('00BW0000000PeSVMA0','View All Open Cases'));
options.add(new SelectOption('00BW0000000PbzWMAS','View All Cases'));
options.add(new SelectOption('00BW0000000PeSGMA0','View All Closed Cases'));
options.add(new SelectOption('00B300000005XQtEAM','Recently Viewed Cases'));
return options;
}
}
I have a map in the controller since the filter Id is the Id = '00BW0000000PeSVMA0' being sent from page. I mapped all open cases and closed cases to status = open and status = closed.
for all open Cases I would go a diff route and use pagination since there might be multiple cases.