In this example you can search records using text as you are observing like global search also you can control Number of rows per page using pagination concept in controller .
First part of this requirement design controller ,Consider Searching on Standard Contact Object and the controller looks like this
public class pagingControllerForUser
{
public List<Contact> AllSearchUsers
{
get
{
if(con != null)
return (List<Contact>)con.getRecords();
else
return null ;
}
set;}
public Contact usr {get; set;}
//Controller
public pagingControllerForUser()
{
AllSearchUsers = new List<Contact>() ;
usr = new Contact() ;
}
public PageReference Search()
{
if(usr.Name != null)
{
con = new ApexPages.StandardSetController(Database.getQueryLocator([select Id , name ,FirstName,LastName, email , phone from Contact where name = :usr.Name or firstname=:usr.Name or lastname=:usr.name]));
// sets the number of records in each page set
con.setPageSize(5);
}
else
{
con = null;
}
return null ;
}
//Instantiate the StandardSetController
public ApexPages.StandardSetController con{get; set;}
//Boolean to check if there are more records after the present displaying records
public Boolean hasNext
{
get
{
return con.getHasNext();
}
set;
}
//Boolean to check if there are more records before the present displaying records
public Boolean hasPrevious
{
get
{
return con.getHasPrevious();
}
set;
}
//Page number of the current displaying records
public Integer pageNumber
{
get
{
return con.getPageNumber();
}
set;
}
//Returns the previous page of records
public void previous()
{
con.previous();
}
//Returns the next page of records
public void next()
{
con.next();
}
}
and the contact pagination looks like this
<apex:page controller="pagingControllerForUser">
<apex:form >
<apex:pageBlock >
<apex:pageMessages id="pgm"/>
<apex:pageBlockButtons >
<apex:commandButton value="Search" action="{!Search}"/>
</apex:pageBlockButtons>
<apex:pageBlockSection >
<apex:pageBlockSectionItem >
<apex:outputLabel value="User Name"/>
<apex:inputText value="{!usr.Name}"/>
</apex:pageBlockSectionItem>
</apex:pageBlockSection>
</apex:pageBlock>
<apex:pageBlock rendered="{!IF(AllSearchUsers.size > 0 , true , false)}">
<apex:outputPanel layout="block" styleClass="pSearchShowMore" id="otpNav2">
Total Records Found: <apex:outputText rendered="{!IF(Con.resultSize==10000,true,false)}">10000 +</apex:outputText><apex:outputText rendered="{!IF(Con.resultSize < 10000,true,false)}">{!Con.resultSize}</apex:outputText>
<apex:image url="/img/search_prevarrow_disabled.gif" styleClass="prevArrow" rendered="{!NOT(Con.HasPrevious)}"/>
<apex:image url="/img/search_prevarrow.gif" title="Previous Page" styleClass="prevArrow" rendered="{!Con.HasPrevious}"/>
<apex:commandLink action="{!Previous}" title="Previous Page" value="Previous Page" rendered="{!Con.HasPrevious}"/>
<apex:outputPanel styleClass="pShowLess noLink" style="color:grey" rendered="{!NOT(Con.HasPrevious)}">Previous Page</apex:outputPanel>
({!IF(Con.PageNumber == 1,1,((Con.PageNumber -1) * Con.PageSize)+1)}-{!IF(Con.resultSize < Con.PageSize,Con.resultSize,Con.PageNumber * Con.pageSize)})
<apex:outputPanel styleClass="pShowLess noLink" style="color:grey" rendered="{!NOT(Con.HasNext)}">Next Page</apex:outputPanel>
<apex:commandLink title="Next Page" value="Next Page" rendered="{!Con.HasNext}" action="{!Next}"/>
<apex:image url="/img/search_nextarrow.gif" title="Next Page" styleClass="nextArrow" rendered="{!Con.HasNext}"/>
<apex:image url="/img/search_nextarrow_disabled.gif" rendered="{!NOT(Con.HasNext)}"/>
</apex:outputPanel>
<apex:pageBlockSection columns="1">
<apex:pageBlockTable value="{!AllSearchUsers}" var="UR">
<apex:column headerValue="Name" value="{!UR.Name}"/>
<apex:column headerValue="Email" value="{!UR.Email}"/>
<apex:column headerValue="Phone" value="{!UR.Phone}"/>
</apex:pageBlockTable>
</apex:pageBlockSection>
<apex:outputPanel layout="block" styleClass="pSearchShowMore" id="otpNav">
Total Records Found: <apex:outputText rendered="{!IF(Con.resultSize==10000,true,false)}">10000 +</apex:outputText><apex:outputText rendered="{!IF(Con.resultSize < 10000,true,false)}">{!Con.resultSize}</apex:outputText>
<apex:image url="/img/search_prevarrow_disabled.gif" styleClass="prevArrow" rendered="{!NOT(Con.HasPrevious)}"/>
<apex:image url="/img/search_prevarrow.gif" title="Previous Page" styleClass="prevArrow" rendered="{!Con.HasPrevious}"/>
<apex:commandLink action="{!Previous}" title="Previous Page" value="Previous Page" rendered="{!Con.HasPrevious}"/>
<apex:outputPanel styleClass="pShowLess noLink" style="color:grey" rendered="{!NOT(Con.HasPrevious)}">Previous Page</apex:outputPanel>
({!IF(Con.PageNumber == 1,1,((Con.PageNumber -1) * Con.PageSize)+1)}-{!IF(Con.resultSize < Con.PageSize,Con.resultSize,Con.PageNumber * Con.pageSize)})
<apex:outputPanel styleClass="pShowLess noLink" style="color:grey" rendered="{!NOT(Con.HasNext)}">Next Page</apex:outputPanel>
<apex:commandLink title="Next Page" value="Next Page" rendered="{!Con.HasNext}" action="{!Next}"/>
<apex:image url="/img/search_nextarrow.gif" title="Next Page" styleClass="nextArrow" rendered="{!Con.HasNext}"/>
<apex:image url="/img/search_nextarrow_disabled.gif" rendered="{!NOT(Con.HasNext)}"/>
</apex:outputPanel>
</apex:pageBlock>
</apex:form>
</apex:page>

No comments:
Post a Comment