function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
KPGUPTAKPGUPTA 

urgently required help on pagination with search result list?

hello,

i want to show min 10 results in searching results bt my code only show me 5 i also need apgination in this. so can any body pls help me 4 dis..??

 

my code is...

   public Integer resultSize {get {return (results==null || results.size()==0)?0:results.size();} set;}     

  public String searchText {get {         

return ApexPages.currentPage().getParameters().get('searchText') != null ?ApexPages.currentPage().getParameters().get('searchText') : '';

}

set;}       

public SearchController() {       

numResults = 10;       

String pg = ApexPages.currentPage().getParameters().get('pg');       

pageNum = pg == null ? 1 : Integer.valueOf(pg);       

searchType = ApexPages.currentPage().getParameters().get('searchType');       

getVideos();    }       

public PageReference newPage() {       

pageNum += 1;        return null;    }       

public PageReference doSearch() {            pageNum = 1;        PageReference p = Page.MarketoSearchResults;        p.getParameters().put('searchText', searchText);        p.getParameters().put('searchType', searchType);        return p;    }        public void refresh(Boolean requery) {                   results = new List<SearchResult>();                if (setCon != null) {                        if (searchType == 'Ideas') {                for (Idea i : (List<Idea>) setCon.getRecords()) {                    results.add(new SearchResult(i.id,i.body,i.title,i.categories,                                i.lastmodifieddate!=null?i.lastmodifieddate:i.createddate));                }            }                        else if (searchType == 'Discussion') {                for (Question q2 : (List<Question>) setCon.getRecords()) {                    results.add(new SearchResult(q2.id,q2.body,q2.title,null,                        q2.lastmodifieddate!=null?q2.lastmodifieddate:q2.createddate));                }            }        }    }        public PageReference searchResults() {                if (searchType == null) {            String sType = ApexPages.currentPage().getParameters().get('searchType');            searchType = sType != null ? sType : 'Discussion';        }        searchText = ApexPages.currentPage().getParameters().get('searchText');        debugVar = 'Search type '+ ApexPages.currentPage().getParameters().get('searchType');        if (searchText == null) {                        if (!context.inSearch) {                searchText = 'Search '  + MarketoUserContext.getContext().currentSection + '...';            }            else {                searchText = 'Refine Your Search...';            }        }            results = new List<SearchResult>();           if (searchType == 'Ideas') {            Id[] similarIds = Ideas.findSimilar(new Idea(title=searchText, Body=searchText));            if (similarIds != null && similarIds.size() > 0) {                                setCon = new ApexPages.StandardSetController([select id, title, body, categories, createddate, lastmodifieddate from                                     idea where id in :similarIds /*order by lastModifieddate desc*/]);                System.debug('setCon-->'+ setCon);                                    setCon.setPageSize(numResults);            }        }        else if (searchType == 'Discussion') {                        Question q = new Question();            Id[] similarIds = Answers.findSimilar(new Question(title=searchText, Body=searchText));            if (similarIds != null && similarIds.size() > 0) {                                setCon = new ApexPages.StandardSetController([select id, title, body, createddate, lastmodifieddate from                                     question where id in :similarIds /*order by lastModifieddate desc*/]);                                                    setCon.setPageSize(numResults);             }        }                        refresh(true);                return null;    }        public String currentSection { get { return MarketoUserContext.getContext().currentSection; } }

Ankit AroraAnkit Arora

Provided code is bit not understandable to me. So here the complete code implementing pagination with salesforce native look and feel.

 

http://forceguru.blogspot.com/2011/04/pagination-in-salesforce.html

 

Now if you want to set the page size to 10 then you can use this "con.setPageSize(10);" instead of "setCon.setPageSize(numResults);"

 

 

Thanks

Ankit Arora

Blog | Facebook | Blog Page

KPGUPTAKPGUPTA

Thanks for replying i already got refrence from your blog i do the same bt its not working don't knw y?

if u want i can gv whole code i vl provide this bt its don't allow me to paste so i got the prob

can u solve dis pls..

KPGUPTAKPGUPTA

vf code...

 <div class="page_top">                <apex:form >                <c:BigSearch />                </apex:form>            </div>            </div>            <div class="page_bottom_ideas">                    <apex:form id="apexideas">
        <apex:outputPanel id="TabbedPanels1" styleclass="TabbedPanels">            <ul class="TabbedPanelsTabGroup">                <li class="TabbedPanelsTab {!if(searchType='Discussion','TabbedPanelsTabSelected','')}">                <apex:outputLink value="{!$Page.MarketoSearchResults}" style="color:{!if($CurrentPage.parameters.searchType=='Discussion','#ffffff','#726fbb')}">Discussion                <apex:param name="searchType" assignTo="{!searchType}" value="Discussion" />                <apex:param name="searchText" assignTo="{!searchText}" value="{!$CurrentPage.parameters.searchText}" />                             </apex:outputLink>                </li>                <li class="TabbedPanelsTab {!if(searchType='Ideas','TabbedPanelsTabSelected','')}">                <apex:outputLink value="{!$Page.MarketoSearchResults}" style="color:{!if($CurrentPage.parameters.searchType=='Ideas','#ffffff','#726fbb')}">Ideas                <apex:param name="searchType" assignTo="{!searchType}" value="Ideas" />                 <apex:param name="searchText" assignTo="{!searchText}" value="{!$CurrentPage.parameters.searchText}" />                             </apex:outputLink>                </li>                <li class="TabbedPanelsTab {!if(searchType='Knowledge','TabbedPanelsTabSelected','')}">                <apex:outputLink value="{!$Page.MarketoSearchResults}" style="color:{!if($CurrentPage.parameters.searchType=='Knowledge','#ffffff','#726fbb')}">Knowledge                <apex:param name="searchType" assignTo="{!searchType}" value="Knowledge" />                 <apex:param name="searchText" assignTo="{!searchText}" value="{!$CurrentPage.parameters.searchText}" />                             </apex:outputLink>                </li>            </ul>        </apex:outputPanel>
        <apex:outputPanel id="pane" styleclass="TabbedPanelsContentGroup" layout="block">            <div class="TabbedPanelsContent" style="{!if(inRecent,'','')}">                 <div style="width:100%;min-height:300px;">
            <apex:repeat id="ideas" value="{!results}" var="r" rendered="{!searchType!='Knowledge'}">                <div class="searchResult"><div id="searchResultTitle"><apex:outputLink value="{!if(searchType='Ideas',$Page.MarketoIdeaDetail,$Page.MarketoDiscussionDetail)}?id={!r.id}" style="font-color:#9fcod6;">{!r.title}</apex:outputLink></div>                <div id="searchResultBody"><apex:outputText value="{!r.shortBody}" escape="false"/></div>                <div id="searchResultFooter"><apex:outputText rendered="{!not(isnull(r.categories))}">{!r.categories} |</apex:outputText>Updated:&nbsp;{!r.formatDt}</div>                </div>            </apex:repeat>                         <apex:variable var="hasMore" value="false"/>                    <apex:variable var="hasKnowledge" value="false"/>                    <knowledge:articleList articleVar="a"                            sortBy="lastUpdated"                            pageNumber="{!pageNum}"                            keyword="{!$CurrentPage.parameters.searchText}"                            hasMoreVar="hasMore"                            pageSize="{!numResults}"                            rendered="{!searchType='Knowledge'}">                                          <apex:outputPanel rendered="{!a.articleTypeName='Article__kav'}">                            <div class="searchResult">                        <div id="searchResultTitle">                            <apex:outputLink value="{!$Page.MarketoArticle}?id={!a.id}">{!a.title}</apex:outputLink>                        </div>                        <div id="searchResultBody">{!a.summary}</div>                        <div id="searchResultFooter">Updated:&nbsp;{!a.lastmodifieddate}</div>                    </div>                    <apex:variable var="hasKnowledge" value="true"/>                    </apex:outputPanel>                                        <apex:outputPanel rendered="{!a.articleTypeName='Tutorial__kav'}">                            <div class="searchResult">                        <div id="searchResultTitle">                            <apex:outputLink value="{!$Page.MarketoTutorial}?id={!a.id}">{!a.title}</apex:outputLink>                        </div>                        <div id="searchResultBody">{!a.summary}</div>                        <div id="searchResultFooter">Updated:&nbsp;{!a.lastmodifieddate}</div>                    </div>                    <apex:variable var="hasKnowledge" value="true"/>                    </apex:outputPanel>                                        <apex:outputPanel rendered="{!a.articleTypeName='Video__kav'}">                            <div class="searchResult" style="float:left;width:700px;">                        <apex:outputText style="float:right;" escape="false" value="{!urlNameToVideoMap[a.urlName].Thumbnail_picture__c}" />                        <div id="searchResultTitle">                            <apex:outputLink value="{!$Page.MarketoVideoLibrary}?title={!urlNameToVideoMap[a.urlName].Title}&id={!urlNameToVideoMap[a.urlName].Id}">{!urlNameToVideoMap[a.urlName].Title}</apex:outputLink>                        </div>                        <div id="searchResultBody">{!a.summary}</div>                        <div id="searchResultFooter">Updated:&nbsp;{!a.lastmodifieddate}</div>                    </div>                    <apex:variable var="hasKnowledge" value="true"/>                    </apex:outputPanel>            </knowledge:articleList>                      <br/>            <apex:outputPanel id="pag4" style="width:100%" rendered="{!searchType='Knowledge'}">                <div style="float:right">                <apex:outputLink rendered="{!HasNextPage}">Next                    <apex:param name="pg" value="{!pageNum+1}"/>                    <apex:param name="searchText" value="{!searchText}"/>                    <apex:param name="searchType" value="{!searchType}"/>                </apex:outputLink>                </div>                <apex:outputLink rendered="{!pageNum > 1}">Previous                    <apex:param name="pg" value="{!pageNum-1}"/>                    <apex:param name="searchText" value="{!searchText}"/>                    <apex:param name="searchType" value="{!searchType}"/>                </apex:outputLink>            </apex:outputPanel>                                    <apex:outputPanel id="pag3" style="width:100%" rendered="{!and(or(searchType='Ideas',searchType='Discussion'),(or(hasNextPage,hasPrevPage)))}">                <div style="float:right">                <apex:commandLink value="Next" action="{!nextPage}" rerender="pane" rendered="{!hasNextPage}"/>                </div>                <apex:commandLink value="Previous" action="{!prevPage}" rerender="pane" rendered="{!hasPrevPage}"/>            </apex:outputPanel>                        <apex:outputPanel rendered="{!or(and(searchType!='Knowledge', resultSize=0), and(searchType='Knowledge', hasKnowledge='false'))}" style="text-align:center">No Results Found</apex:outputPanel>            </div>            </div>        </apex:outputPanel>                    </apex:form>    </div>

Ankit AroraAnkit Arora

Use "Insert Code" from editor itself to paste your code here. It will be easy for us to understand it.

 

And please paste VF page and Apex code.

 

 

Thanks

Ankit Arora

Blog | Facebook | Blog Page

KPGUPTAKPGUPTA

<apex:page title=" Community - Search Results" action="{!searchResults}" controller="SearchController" showHeader="false" sidebar="false">

<apex:composition template="CommunityTemplate">

<apex:define name="body">

 

 

    <div id="ideas">

            <div class="page_top">

                <apex:form >

                <c:BigSearch />

                </apex:form>

            </div>

            </div>

            <div class="page_bottom_ideas">

            

        <apex:form id="apexideas">

 

        <apex:outputPanel id="TabbedPanels1" styleclass="TabbedPanels">

            <ul class="TabbedPanelsTabGroup">

                <li class="TabbedPanelsTab {!if(searchType='Discussion','TabbedPanelsTabSelected','')}">

                <apex:outputLink value="{!$Page.SearchResults}" style="color:{!if($CurrentPage.parameters.searchType=='Discussion','#ffffff','#726fbb')}">Discussion

                <apex:param name="searchType" assignTo="{!searchType}" value="Discussion" />

                <apex:param name="searchText" assignTo="{!searchText}" value="{!$CurrentPage.parameters.searchText}" />             

                </apex:outputLink>

                </li>

                <li class="TabbedPanelsTab {!if(searchType='Ideas','TabbedPanelsTabSelected','')}">

                <apex:outputLink value="{!$Page.SearchResults}" style="color:{!if($CurrentPage.parameters.searchType=='Ideas','#ffffff','#726fbb')}">Ideas

                <apex:param name="searchType" assignTo="{!searchType}" value="Ideas" /> 

                <apex:param name="searchText" assignTo="{!searchText}" value="{!$CurrentPage.parameters.searchText}" />             

                </apex:outputLink>

                </li>

                <li class="TabbedPanelsTab {!if(searchType='Knowledge','TabbedPanelsTabSelected','')}">

                <apex:outputLink value="{!$Page.SearchResults}" style="color:{!if($CurrentPage.parameters.searchType=='Knowledge','#ffffff','#726fbb')}">Knowledge

                <apex:param name="searchType" assignTo="{!searchType}" value="Knowledge" /> 

                <apex:param name="searchText" assignTo="{!searchText}" value="{!$CurrentPage.parameters.searchText}" />             

                </apex:outputLink>

                </li>

            </ul>

        </apex:outputPanel>

 

        <apex:outputPanel id="pane" styleclass="TabbedPanelsContentGroup" layout="block">

            <div class="TabbedPanelsContent" style="{!if(inRecent,'','')}">     

            <div style="width:100%;min-height:300px;">

 

            <apex:repeat id="ideas" value="{!results}" var="r" rendered="{!searchType!='Knowledge'}">

                <div class="searchResult"><div id="searchResultTitle"><apex:outputLink value="{!if(searchType='Ideas',$Page.IdeaDetail,$Page.DiscussionDetail)}?id={!r.id}" style="font-color:#9fcod6;">{!r.title}</apex:outputLink></div>

                <div id="searchResultBody"><apex:outputText value="{!r.shortBody}" escape="false"/></div>

                <div id="searchResultFooter"><apex:outputText rendered="{!not(isnull(r.categories))}">{!r.categories} |</apex:outputText>Updated:&nbsp;{!r.formatDt}</div>

                </div>

            </apex:repeat>

             

            <apex:variable var="hasMore" value="false"/>        

            <apex:variable var="hasKnowledge" value="false"/>

         

            <knowledge:articleList articleVar="a"

                            sortBy="lastUpdated"

                            pageNumber="{!pageNum}"

                            keyword="{!$CurrentPage.parameters.searchText}"

                            hasMoreVar="hasMore"

                            pageSize="{!numResults}"

                            rendered="{!searchType='Knowledge'}">  

                    

                    <apex:outputPanel rendered="{!a.articleTypeName='Article__kav'}">        

                    <div class="searchResult">

                        <div id="searchResultTitle">

                            <apex:outputLink value="{!$Page.Article}?id={!a.id}">{!a.title}</apex:outputLink>

                        </div>

                        <div id="searchResultBody">{!a.summary}</div>

                        <div id="searchResultFooter">Updated:&nbsp;{!a.lastmodifieddate}</div>

                    </div>

                    <apex:variable var="hasKnowledge" value="true"/>

                    </apex:outputPanel>

                    

                    <apex:outputPanel rendered="{!a.articleTypeName='Tutorial__kav'}">        

                    <div class="searchResult">

                        <div id="searchResultTitle">

                            <apex:outputLink value="{!$Page.Tutorial}?id={!a.id}">{!a.title}</apex:outputLink>

                        </div>

                        <div id="searchResultBody">{!a.summary}</div>

                        <div id="searchResultFooter">Updated:&nbsp;{!a.lastmodifieddate}</div>

                    </div>

                    <apex:variable var="hasKnowledge" value="true"/>

                    </apex:outputPanel>

                    

                    <apex:outputPanel rendered="{!a.articleTypeName='Video__kav'}">        

                    <div class="searchResult" style="float:left;width:700px;">

                        <apex:outputText style="float:right;" escape="false" value="{!urlNameToVideoMap[a.urlName].Thumbnail_picture__c}" />

                        <div id="searchResultTitle">

                            <apex:outputLink value="{!$Page.VideoLibrary}?title={!urlNameToVideoMap[a.urlName].Title}&id={!urlNameToVideoMap[a.urlName].Id}">{!urlNameToVideoMap[a.urlName].Title}</apex:outputLink>

                        </div>

                        <div id="searchResultBody">{!a.summary}</div>

                        <div id="searchResultFooter">Updated:&nbsp;{!a.lastmodifieddate}</div>

                    </div>

                    <apex:variable var="hasKnowledge" value="true"/>

                    </apex:outputPanel>

            </knowledge:articleList>

           

           <br/>

            <apex:outputPanel id="pag4" style="width:100%" rendered="{!searchType='Knowledge'}">

                <div style="float:right">

                <apex:outputLink rendered="{!hasMore}">Next

                    <apex:param name="pg" value="{!pageNum+1}"/>

                    <apex:param name="searchText" value="{!searchText}"/>

                    <apex:param name="searchType" value="{!searchType}"/>

                </apex:outputLink>

                </div>

                <apex:outputLink rendered="{!pageNum > 1}">Previous

                    <apex:param name="pg" value="{!pageNum-1}"/>

                    <apex:param name="searchText" value="{!searchText}"/>

                    <apex:param name="searchType" value="{!searchType}"/>

                </apex:outputLink>

            </apex:outputPanel>

                        

            <apex:outputPanel id="pag3" style="width:100%" rendered="{!and(or(searchType='Ideas',searchType='Discussion'),(or(hasNextPage,hasPrevPage)))}">

                <div style="float:right">

                <apex:commandLink value="Next" action="{!nextPage}" rerender="pane" rendered="{!hasNextPage}"/>

                </div>

                <apex:commandLink value="Previous" action="{!prevPage}" rerender="pane" rendered="{!hasPrevPage}"/>

            </apex:outputPanel>

            

            <apex:outputPanel rendered="{!or(and(searchType!='Knowledge', resultSize=0), and(searchType='Knowledge', hasKnowledge='false'))}" style="text-align:center">No Results Found</apex:outputPanel>

            </div>

            </div>

        </apex:outputPanel>

            

        </apex:form>

    </div>

</apex:define>

</apex:composition>

</apex:page>

 

KPGUPTAKPGUPTA

Apex code:

===========

==================================

public class SearchController extends BaseController {

 

    public string debugVar {get;set;} 

    public Integer pageNum {get; set;}

    public String searchType {get; set;}

    public Boolean inRecent {get; set;}

    public Boolean inPopular {get; set;}

    public String selectedCategory {get; set;}

    public static Integer numResults {get; set;}

    public List<SearchResult> results {get; set;}

    private ApexPages.StandardSetController setCon {get; private set;} 

    public Map<String, Video__kav> urlNameToVideoMap {get;set;}

    public List<Video__kav> videoList{get;set;}      

    

    public Integer resultSize {get {return (results==null || results.size()==0)?0:results.size();} set;}

    

    public String searchText {get {

         return ApexPages.currentPage().getParameters().get('searchText') != null ? 

                ApexPages.currentPage().getParameters().get('searchText') : '';} set;}

    

    public SearchController() {

        numResults = 10;

        String pg = ApexPages.currentPage().getParameters().get('pg');

        pageNum = pg == null ? 1 : Integer.valueOf(pg);

        searchType = ApexPages.currentPage().getParameters().get('searchType');

        getVideos();

    }

    

    public PageReference newPage() {

        pageNum += 1;

        return null;

    }

    

    public PageReference doSearch() {

    

        pageNum = 1;

        PageReference p = Page.SearchResults;

        p.getParameters().put('searchText', searchText);

        p.getParameters().put('searchType', searchType);

        return p;

    }

    

    public void refresh(Boolean requery) {

           

        results = new List<SearchResult>();

        

        if (setCon != null) {

            

            if (searchType == 'Ideas') {

                for (Idea i : (List<Idea>) setCon.getRecords()) {

                    results.add(new SearchResult(i.id,i.body,i.title,i.categories,

                                i.lastmodifieddate!=null?i.lastmodifieddate:i.createddate));

                }

            }

            

            else if (searchType == 'Discussion') {

                for (Question q2 : (List<Question>) setCon.getRecords()) {

                    results.add(new SearchResult(q2.id,q2.body,q2.title,null,

                        q2.lastmodifieddate!=null?q2.lastmodifieddate:q2.createddate));

                }

            }

        }

    }

    

    public PageReference searchResults() {

        

        if (searchType == null) {

            String sType = ApexPages.currentPage().getParameters().get('searchType');

            searchType = sType != null ? sType : 'Discussion';

        }

        

        searchText = ApexPages.currentPage().getParameters().get('searchText');

        debugVar = 'Search type '+ApexPages.currentPage().getParameters().get('searchType');

        if (searchText == null) {

            

            if (!context.inSearch) {

                searchText = 'Search '  + UserContext.getContext().currentSection + '...';

            }

            else {

                searchText = 'Refine Your Search...';

            }

        }

    

        results = new List<SearchResult>();

    

        if (searchType == 'Ideas') {

            Id[] similarIds = Ideas.findSimilar(new Idea(title=searchText, Body=searchText));

            if (similarIds != null && similarIds.size() > 0) {

                

                setCon = new ApexPages.StandardSetController([select id, title, body, categories, createddate, lastmodifieddate from 

                                    idea where id in :similarIds order by lastModifieddate desc]);

                                    

                setCon.setPageSize(numResults);

            }

        }

        else if (searchType == 'Discussion') {

            

            Question q = new Question();

            Id[] similarIds = Answers.findSimilar(new Question(title=searchText, Body=searchText));

            if (similarIds != null && similarIds.size() > 0) {

                

                setCon = new ApexPages.StandardSetController([select id, title, body, createddate, lastmodifieddate from 

                                    question where id in :similarIds order by lastModifieddate desc]);

                                    

                setCon.setPageSize(numResults); 

            }

        }

        

        

        refresh(true);

        

        return null;

    }

    

    public String currentSection { get { return UserContext.getContext().currentSection; } }

    

    public PageReference prevPage() {

        if (setCon != null) {

            setCon.previous();

            refresh(false);

        }

        return null;

    }

    

    public PageReference nextPage() {

        if (setCon != null) {

            setCon.next();

            refresh(false);

        }

        return null;

    }

    

    public Boolean getHasPrevPage() {

        if (setCon != null) {

            return setCon.getHasPrevious();

        }

        return false;

    }

    

    public Boolean getHasNextPage() {

        if (setCon != null) {

            return setCon.getHasNext();

        }

        return false;

    }

    

    public class SearchResult {

        

        public String id {get; set;}

        public String body {get; set;}

        public String formatDt {get; set;}

        public String shortBody {get; set;}

        public String title {get; set;}

        public String categories {get; set;}

        

        public SearchResult(String id, String body, String title, String categories, DateTime dt) {

            

            this.id = id;

            this.body = body;

            this.title = title;

            this.categories = categories;

            this.shortBody = GlobalFunctions.getShortBody(body);

            

            formatDt = dt.date().format() + ' ' +

                (dt.hour() > 12 ? dt.hour()-12 : dt.hour()) + ':' +

                (dt.minute() < 10 ? '0' + String.valueOf(dt.minute()) : String.valueOf(dt.minute())) + ' ' +

                (dt.hour() >= 12 && dt.hour() <= 24 ? ' PM' : ' AM'); 

        }

    }

    

    

KPGUPTAKPGUPTA

In the above code Searching is done. nw the problem of not showing 10 records and paging also .so can you nw hellp me 4 dis. 

 

Thanks,

Kpgupta

KPGUPTAKPGUPTA

i got ver d issue is ... issue is in line 

 Question q = new Question();                

      Id[] similarIds = Answers.findSimilar(new Question(title=searchText, Body=searchText));

 

in this in SimilarIds only 5 ids are shown dn't knw y. can anybody pls expalin.,,

Grant_at_TractionGrant_at_Traction

Did you ever find a solution to this? I'm experiencing the same problem. It seems like the Answers.findSimilar call is limited to 5 results? If so, it is a pretty useless method...