在c#里面,我们有可拖动的控件datagrid可用,但是,在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 %>" />

转载于:https://www.cnblogs.com/zhiliang/archive/2013/02/08/2909159.html

liferay search container的两种实现方式相关推荐

  1. lisp遍历表中所有顶点_三十张图片让你彻底弄明白图的两种遍历方式:DFS和BFS...

    1 引言   遍历是指从某个节点出发,按照一定的的搜索路线,依次访问对数据结构中的全部节点,且每个节点仅访问一次.   在二叉树基础中,介绍了对于树的遍历.树的遍历是指从根节点出发,按照一定的访问规则 ...

  2. redis连接不上,两种解决方式

    今天某个项目的redis连不上了,将自己用到的两个解决办法写篇记录(实际使用时方法二选一即可). redis连接不上,两种解决方式 一.首先排查本地redis连接有没有问题 1. 在服务器上查看red ...

  3. Python爬虫的两种请求方式,读者都了解吗?

    Python爬虫中的get和post请求 前言 Python爬虫请求数据有get和post两种请求方式,也许读者对于它们的应用已经掌握到炉火纯青的地步了,但是关于它们的基本语法是否了解吗? 文章目录 ...

  4. fragment的两种切换方式(add,replace),fragment重叠问题

    fragment的两种切换方式: 1.通过add方法添加fragment,再通过hide,show决定显示哪一个fragment,此方式是将fragment隐藏而非重建 2.replace:每次都是重 ...

  5. C++中的两种绑定方式(静态绑定、动态绑定)

    两种绑定方式 静态绑定:在编译时刻,根据指针或引用变量的静态类型来决定成员函数属于哪一个类. 动态绑定:在运行时刻,根据指针或引用变量实际指向或引用的对象类型(动态类型)来确定成员函数属于哪一个类. ...

  6. (C++)string 的两种输入方式和输出方式

    注:头文件如下 #include<string> #include<cstdio> #include<iostream>using namespace std; 注 ...

  7. 三十张图片让你彻底弄明白图的两种遍历方式:DFS和BFS

    1 引言   遍历是指从某个节点出发,按照一定的的搜索路线,依次访问对数据结构中的全部节点,且每个节点仅访问一次.图的遍历.遍历过程中得到的顶点序列称为图遍历序列. 2 深度优先搜索 2.1 算法思想 ...

  8. Java两种排序方式快慢比较

    2019独角兽企业重金招聘Python工程师标准>>> Java中List的排序方式有两种,现在我们测试下这两种排序方式的快慢吧,我们需要用到两个类, 一个是运行程序的Main类,另 ...

  9. Vivado IP的两种综合方式:Global 和 Out-Of-Context

    在最新的Vivado的版本中,定制IP的时候,会有一个综合方式的选择,如下图所示.可以看到一种叫做"Global",一种叫"Out-Of-Context (OOC)&qu ...

最新文章

  1. MySQL数据库分页查询limit
  2. 造一个鸿蒙,仅有华为还不够
  3. [CF843D]Dynamic Shortest Path
  4. python compile正则_Python 正则表达式:compile,match
  5. 网络推广下叮咚买菜已完成D轮融资,生鲜电商下一次融资又在何方?
  6. Hot Door CADtools (基础篇)
  7. JArchitect v2017发布!
  8. 浅谈JSP表单中的form传值
  9. 七月刚入职的阿里测试开发岗-高频知识整理,内附面试题答案
  10. Asp.net SQL注入实例分享
  11. 复制粘贴之后出现问号怎么办_网页没办法复制粘贴?老司机传授这3招太赞了,全网任意免费复制...
  12. svn客户端删除服务器文件,怎么使用Tortoise SVN客户端上传删除文件、创建删除文件夹...
  13. 平时常见的音频文件格式有哪些呢?
  14. 关于解决未在计算机注册Active控件或者没有Active控件的解决方法
  15. Mirth Connect 互联互通 第四章 通用资格服务实现
  16. 轻松解决vscode官网下载慢问题
  17. 6、Lctech Pi(F1C200S)4.3寸(480*272)16位RGB565LCD屏驱动适配(CherryPi,Mangopi,F1C100S)
  18. 虚拟硬盘 服务器 破解,服务器版虚拟硬盘_Primo Ramdisk Server Edition V5.6.1 免费版
  19. FleaPHP 开发指南 - 2. FleaPHP 中的 MVC 模式
  20. 小程序背景图满屏_手机秒变闪屏弹幕,撩妹小程序,赶快来学!

热门文章

  1. 力扣59-螺旋矩阵(C++)
  2. 挖掘频繁模式、关联和相关性:基本概念和方法
  3. [Swift]LeetCode17. 电话号码的字母组合 | Letter Combinations of a Phone Number
  4. HDU6395 Sequence(矩阵快速幂+数论分块)
  5. 《剑指offer》--- 数组中只出现一次的数字
  6. Struts2(十二)使用验证框架验证数据较验
  7. 下拉菜单(含有阻止事件冒泡)
  8. Python学习笔记之列表(五)
  9. JSON解析中获取不存在的key
  10. getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getSchemeSpecificPart()返回内容解析