liferay searchContainer 分頁實現

下面介紹一下,我所採用的兩種方法來實現。

第一種:

  <liferay-ui:search-container delta='<%= GetterUtil.getInteger(prefs.getValue("rowsPerPage", "5")) %>' emptyResultsMessage="root-empty-results-message">  

  <liferay-ui:search-container-results   

    results="<%= FirstlevelLocalServiceUtil.getFirstlevelsByGroupId(scopeGroupId, searchContainer.getStart(), searchContainer.getEnd()) %>"  

     total="<%= FirstlevelLocalServiceUtil.getFirstlevelsCountByGroupId(scopeGroupId) %>"  >

     </liferay-ui:search-container-results >

   <liferay-ui:search-container-row   className="com.navigation.model.Firstlevel"   keyProperty="firstlevelId"   modelVar="firstlevel" escapedModel="<%= true %>"     >   

    <liferay-ui:search-container-column-text    name="name"    value="<%= firstlevel.getName() %>"   />

     <liferay-ui:search-container-column-jsp     align="right"     path="/html/config/firstlevel_actions.jsp"       />  

    </liferay-ui:search-container-row>

    <liferay-ui:search-iterator />  

</liferay-ui:search-container>

在上述代碼中,delta屬性是爲了控制所顯示的行數,此處默認顯示5行,如果超過則顯示分頁(該功能爲search-container自動提供)。(prefs.getValue("rowsPerPage", "5"), 其中prefs需要事先定義如下:

<%
 PortletPreferences prefs = renderRequest.getPreferences();
%>

另外兩個屬性results和total是從數據庫中所取出的結果集及總數。

<liferay-ui:search-container-column-text    name="name".......>中,name 爲所顯示的列名稱。

<liferay-ui:search-container-column-jsp.......>可以添加對應的圖片或者按鈕,當我們點擊時,可以進行跳轉。

最重要的是<liferay-ui:search-iterator /> ,該句是爲了將所取出的數據逐條顯示到界面。類似於c++中vector的iterator功能。

 

第二種方法:

<%

PortletURL portletURL = renderResponse.createRenderURL();

List<String> headerNames = new ArrayList<String>();

headerNames.add("name");   //增加列名

headerNames.add("Operate"); //增加列名

// create search container, used to display table

SearchContainer searchContainer = new SearchContainer(renderRequest,null, null,SearchContainer.DEFAULT_CUR_PARAMSearchContainer.DEFAULT_DELTA,

                              portletURL,headerNames, "There No Result To Display");

 searchContainer.setTotal(petsCount);

 List<ResultRow> resultRows = searchContainer.getResultRows();

 List<Firstlevel> results = FirstlevelLocalServiceUtil.getFirstlevelsByGroupId(scopeGroupId, searchContainer.getStart(), searchContainer.getEnd());

 for (int i = 0; i < results.size(); i++) {  

 Firstlevel getGirstlevel = (Firstlevel)results.get(i);  

ResultRow row = new ResultRow(getGirstlevel, getGirstlevel.getFirstlevelId(), i);

 row.addText(getGirstlevel.getName(), "");  //將數據加入

 row.addJSP("/html/config/firstlevel_actions.jsp", application, request, response); //將要跳轉的頁面加入

 resultRows.add(row);  //將顯示的行加入

} %>

這段代碼的功能,將所有的數據信息從數據庫中取出並進行的存儲。剩下所要進行的操作就是將其顯示出來。

那麼使用下面代碼

<liferay-ui:search-iterator searchContainer="<%= searchContainer %>" />

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



爲了將顯示的結果數和分頁功能去掉的話,在searchContainer中增加paginate="<%=false%>"即可,如下:

<liferay-ui:search-iterator paginate="<%=false%>" searchContainer="<%= searchContainer %>" />


轉自 http://www.cnblogs.com/zhiliang/archive/2013/02/08/2909159.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章