You need to sign in to do that
Don't have an account?
learning1.3953795511514497E12
pageblocktable pagination with wrapper class
Hi ,
I want to develop pagination for the pageblocktable with standardsetController. When I search online i m finding the codes where the standard controller and soql are used, as shown below...
private String baseQuery = 'Select ID, Name FROM Account ORDER BY NAME ASC';
public ApexPages.StandardSetController AccSetController {
get{
if(AccSetController == null){
AccSetController = new ApexPages.StandardSetController(Database.getQueryLocator(baseQuery));
AccSetController.setPageSize(pageSize);
// We have to set FilterId after Pagesize, else it will not work
if(AccFilterId != null)
{
AccSetController.setFilterId(AccFilterId);
}
}
return AccSetController;
}set;
}
but, in my case i m not using any soql, instead I am using the wrapper classes . below is my code.
VF PAGE:
===========
<apex:page controller="TablePaginationController">
<apex:form >
<apex:pageBlock >
<apex:pageblockTable value="{!LinkedinCompanies}" var="linkedinComp" id="linkedinCompaniesTable">
<apex:column headerValue="id" value="{!linkedinComp.id}" />
<apex:column headerValue="name" value="{!linkedinComp.name}" />
</apex:pageblockTable>
</apex:pageBlock>
</apex:form>
</apex:page>
APEX :
=============
public with sharing class TablePaginationController
{
public List<companyDetails> data { get; set; }
public ApexPages.StandardSetController setCon;
public List<companyDetails> LinkedinCompanies{get;set;}
public Class companyDetails
{
public Integer id {get;set;}
public String name {get;set;}
}
public void linkedinSearch()
{
try{
String linkedinResponse = '{"companies": { "_count": 10, "_start": 0, "_total": 55556, "values": [ { "id": 10667, "name": "Facebook" }, { "id": 3748947, "name": "Community Management Facebook y Facebook Ads" }, { "id": 3219314, "name": "Smart Facebook Likes" }, { "id": 2620756, "name": "Revolucionamos Facebook" }, { "id": 3326206, "name": "Facebook-buy-fans.com" }, { "id": 2811427, "name": "Empowers Facebook Marketing for Business" }, { "id": 2226401, "name": "Facebook Advertising" }, { "id": 5059292, "name": "Facebook Covers" }, { "id": 3100592, "name": "Facebook Property Listing by propertybooster.com" }, { "id": 2453105, "name": "FaceBook Business Page Your Biz First" } ] }}';
linkedinResponse = linkedinResponse.replace('"_', '"lin_');
Map<String, Object> linkedinRespCompanies = (Map<String, Object>) JSON.deserializeUntyped(linkedinResponse);
Map<String,Object> CompaniesMap = (Map<String,Object>)linkedinRespCompanies.get('companies');
String str = JSON.serialize(CompaniesMap.get('values'));
List<companyDetails> LinkedinCompanies = (List<companyDetails>) JSON.deserializeStrict(str, List<companyDetails>.class);
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFo,'' +LinkedinCompanies));
data = LinkedinCompanies;
}
catch(Exception e)
{
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'Exception' +e));
}
}
}
how do i develop pagination for this?
Please help.
Anupama
I want to develop pagination for the pageblocktable with standardsetController. When I search online i m finding the codes where the standard controller and soql are used, as shown below...
private String baseQuery = 'Select ID, Name FROM Account ORDER BY NAME ASC';
public ApexPages.StandardSetController AccSetController {
get{
if(AccSetController == null){
AccSetController = new ApexPages.StandardSetController(Database.getQueryLocator(baseQuery));
AccSetController.setPageSize(pageSize);
// We have to set FilterId after Pagesize, else it will not work
if(AccFilterId != null)
{
AccSetController.setFilterId(AccFilterId);
}
}
return AccSetController;
}set;
}
but, in my case i m not using any soql, instead I am using the wrapper classes . below is my code.
VF PAGE:
===========
<apex:page controller="TablePaginationController">
<apex:form >
<apex:pageBlock >
<apex:pageblockTable value="{!LinkedinCompanies}" var="linkedinComp" id="linkedinCompaniesTable">
<apex:column headerValue="id" value="{!linkedinComp.id}" />
<apex:column headerValue="name" value="{!linkedinComp.name}" />
</apex:pageblockTable>
</apex:pageBlock>
</apex:form>
</apex:page>
APEX :
=============
public with sharing class TablePaginationController
{
public List<companyDetails> data { get; set; }
public ApexPages.StandardSetController setCon;
public List<companyDetails> LinkedinCompanies{get;set;}
public Class companyDetails
{
public Integer id {get;set;}
public String name {get;set;}
}
public void linkedinSearch()
{
try{
String linkedinResponse = '{"companies": { "_count": 10, "_start": 0, "_total": 55556, "values": [ { "id": 10667, "name": "Facebook" }, { "id": 3748947, "name": "Community Management Facebook y Facebook Ads" }, { "id": 3219314, "name": "Smart Facebook Likes" }, { "id": 2620756, "name": "Revolucionamos Facebook" }, { "id": 3326206, "name": "Facebook-buy-fans.com" }, { "id": 2811427, "name": "Empowers Facebook Marketing for Business" }, { "id": 2226401, "name": "Facebook Advertising" }, { "id": 5059292, "name": "Facebook Covers" }, { "id": 3100592, "name": "Facebook Property Listing by propertybooster.com" }, { "id": 2453105, "name": "FaceBook Business Page Your Biz First" } ] }}';
linkedinResponse = linkedinResponse.replace('"_', '"lin_');
Map<String, Object> linkedinRespCompanies = (Map<String, Object>) JSON.deserializeUntyped(linkedinResponse);
Map<String,Object> CompaniesMap = (Map<String,Object>)linkedinRespCompanies.get('companies');
String str = JSON.serialize(CompaniesMap.get('values'));
List<companyDetails> LinkedinCompanies = (List<companyDetails>) JSON.deserializeStrict(str, List<companyDetails>.class);
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFo,'' +LinkedinCompanies));
data = LinkedinCompanies;
}
catch(Exception e)
{
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'Exception' +e));
}
}
}
how do i develop pagination for this?
Please help.
Anupama
Please see if these links help:
http://blog.jeffdouglas.com/2009/07/14/visualforce-page-with-pagination/
http://richardvanhook.com/2009/08/03/visualforce-pagination-with-apex-lang/
If this answers your question, please mark this as the Best Answer for this post, so that others can benefit from this post.
Thanks,
Shashank
something similar to this on the block where you are populating records on the VF
<!-- Section to show display pagination for the Deal list -->
<apex:outputPanel style="position:absolute;margin-left:10cm;" id="grd">
<apex:commandButton status="fetchStatus" reRender="myPanel,grd" value="First |<" action="{!setCon.first}" disabled="{!!setCon.hasPrevious}" title="First Page"/>
<apex:commandButton status="fetchStatus" reRender="myPanel,grd" value="Previous <" action="{!setCon.previous}" disabled="{!!setCon.hasPrevious}" title="Previous Page"/>
<apex:outputText >{!(setCon.pageNumber)} of {!CEILING(noOfRecords/size)}</apex:outputText>
<apex:commandButton status="fetchStatus" reRender="myPanel,grd" value="Next >" action="{!setCon.next}" disabled="{!!setCon.hasNext}" title="Next Page"/>
<apex:commandButton status="fetchStatus" reRender="myPanel,grd" value="Last >|" action="{!setCon.last}" disabled="{!!setCon.hasNext}" title="Last Page"/>
</apex:outputPanel>
If you are still looking for solution. Then Please check below blog :-
http://amitsalesforce.blogspot.in/2014/11/pagination-with-wrapper-class-with.html
Thanks,
Amit Chaudhary