Ajax (1) Apex Class (12) Apex Trigger (2) Community (2) Home Page (1) HTML (4) Integration (3) JS (7) KB (1) Label (1) Licenses (1) Listing (1) Log (1) OOPs (5) Sharing (1) Static Resource (1) Test Class (3) URI (1) Visualforce (10)

Monday 3 March 2014

Pagination

public class MyPagingController {

private List accounts;

private List pageAccounts;

private Integer pageNumber;

private Integer pageSize;

private Integer totalPageNumber;

public Integer getPageNumber()

{

return pageNumber;

}

public List getAccounts()

{

return pageAccounts;

}

public Integer getPageSize()

{

return pageSize;

}

public Boolean getPreviousButtonEnabled()

{

return !(pageNumber > 1);

}

public Boolean getNextButtonDisabled()

{

if (accounts == nullreturn true;

else

return ((pageNumber * pageSize) >= accounts.size());

}

public Integer getTotalPageNumber()

{

if (totalPageNumber == 0 && accounts !=null)

{

totalPageNumber = accounts.size() / pageSize;

Integer mod = accounts.size() - (totalPageNumber * pageSize);

if (mod > 0)

totalPageNumber++;

}

return totalPageNumber;

}

public MyPagingController()

{

pageNumber = 0;

totalPageNumber = 0;

pageSize = 20;

ViewData();

}

public PageReference ViewData()

{

accounts = null;

totalPageNumber = 0;

BindData(1);

return null;

}

private void BindData(Integer newPageIndex)

{

try

{

if (accounts == null)

accounts = [Select id, Name, Phone, Fax from Account limit 1000];

pageAccounts = new List();

Transient Integer counter = 0;

Transient Integer min = 0;

Transient Integer max = 0;

if (newPageIndex > pageNumber)

{

min = pageNumber * pageSize;

max = newPageIndex * pageSize;

}

else

{

max = newPageIndex * pageSize;

min = max - pageSize;

min = (min <>

}

for(Account a : accounts)

{

counter++;

if (counter > min && counter <= max)

pageAccounts.add(a);

}

pageNumber = newPageIndex;

if (pageAccounts == null || pageAccounts.size() <= 0)

ApexPages.addmessage(newApexPages.message(ApexPages.severity.INFO,'Data not available for this view.'));

}

catch(Exception ex)

{

ApexPages.addmessage(newApexPages.message(ApexPages.severity.FATAL,ex.getMessage()));

}

}

public PageReference nextBtnClick() {

BindData(pageNumber + 1);

return null;

}

public PageReference previousBtnClick() {

BindData(pageNumber - 1);

return null;

}

}


-----------------------------------------
<apex:page controller="MyPagingController" tabStyle="Account">
<apex:sectionHeader title="Accounts List with Paging"></apex:sectionHeader>
<apex:form >
<apex:pageBlock title="" id="pageBlock">
<apex:pageBlockButtons location="top">
<apex:commandButton value="View" action="{!ViewData}" id="theButton" rerender="pageBlock"></apex:commandButton>
</apex:pageBlockButtons>
<apex:pageMessages ></apex:pageMessages>
<div align="right" style="display:{!IF(NOT(ISNULL(accounts)),'block','none')}">
<font size="1pt">Page #:&nbsp;<apex:outputLabel value="{!PageNumber}"/>&nbsp;out of&nbsp;<apex:outputLabel value="{!totalPageNumber}"/>&nbsp;&nbsp;&nbsp;&nbsp;</font>
<apex:commandButton value="Previous" action="{!previousBtnClick}" disabled="{!previousButtonEnabled}" reRender="pageBlock"></apex:commandButton>
<apex:commandButton value="Next" action="{!nextBtnClick}" reRender="pageBlock" disabled="{!nextButtonDisabled}" ></apex:commandButton>
</div>
<br/><br/>
<apex:pageBlockTable value="{!accounts}" var="a" rendered="{!NOT(ISNULL(accounts))}" rows="{!PageSize}">
<apex:column >
<apex:facet name="header">Account Name</apex:facet>
<apex:outputLink value="/{!a.Id}" target="_blank">{!a.Name}</apex:outputLink>
</apex:column>
<apex:column value="{!a.Phone}"></apex:column>
<apex:column value="{!a.Fax}"></apex:column>
</apex:pageBlockTable>
<div align="right" style="display:{!IF(NOT(ISNULL(accounts)),'block','none')}">
<br/>
<font size="1pt">Page #:&nbsp;<apex:outputLabel value="{!PageNumber}"/>&nbsp;out of&nbsp;<apex:outputLabel value="{!totalPageNumber}"/>&nbsp;&nbsp;&nbsp;&nbsp;</font>
<apex:commandButton value="Previous" action="{!previousBtnClick}" disabled="{!previousButtonEnabled}" reRender="pageBlock"></apex:commandButton>
<apex:commandButton value="Next" action="{!nextBtnClick}" reRender="pageBlock" disabled="{!nextButtonDisabled}" ></apex:commandButton>
</div>

</apex:pageBlock>
</apex:form>
</apex:page>

No comments:

Post a Comment