参考:http://tsinglongwu.iteye.com/blog/849923

以下代码模拟数据量大时情况,采用“<paging>”组件方式

前台Listbox.zul :

<?page title="Listbox使用" contentType="text/html;charset=UTF-8"?>
<zk xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.zkoss.org/2005/zul"
xsi:schemaLocation="http://www.zkoss.org/2005/zul http://www.zkoss.org/2005/zul">
<window id="listboxWin" border="normal" apply="test.ListboxCtrl">
<listbox id="listbox">
<listhead sizable="true" >
<listheader id="nameListHeader" label="姓名" align="center"/>
</listhead>
</listbox>
<paging id="pagetest" pageSize="10" totalSize="50000" detailed="true"/>
</window>
</zk>

ListboxCtrl.java :

package test;

import java.util.ArrayList;
import java.util.List; import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Label;
import org.zkoss.zul.ListModelList;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.ListitemRenderer;
import org.zkoss.zul.Paging;
import org.zkoss.zul.event.PagingEvent; public class ListboxCtrl extends GenericForwardComposer<Component>{ private static final long serialVersionUID = 1L; private Listbox listbox;
private ListModelList<String> model;
private List<String> testList = new ArrayList<String>();
private Paging pagetest;
private int count = 1; @Override
public void doAfterCompose(Component comp) throws Exception {
// TODO Auto-generated method stub
super.doAfterCompose(comp); //填充第一页数据
for (int i = 1; i < pagetest.getPageSize()+1; i++) {
testList.add(i+"");
} model = new ListModelList<String>(testList);
listbox.setModel(model);
listbox.setItemRenderer(new testItemRenderer()); //监听分页改变事件
pagetest.addEventListener("onPaging", new EventListener<Event>() { @Override
public void onEvent(Event event) throws Exception {
// TODO Auto-generated method stub
PagingEvent pe = (PagingEvent) event; redraw(pe.getActivePage()+1,pagetest.getPageSize());
}
});
} public class testItemRenderer implements ListitemRenderer<String>{ @Override
public void render(Listitem item, String data, final int index)
throws Exception {
// TODO Auto-generated method stub item.setValue(data);
Listcell listcell2 = new Listcell();
Label label = new Label(data);
listcell2.appendChild(label);
listcell2.setParent(item);
}
} private void redraw(int activePage,int pageSize) { //清空所有数据
listbox.getItems().clear();
testList.clear(); int total = activePage * pageSize; for (int i = total-pageSize+1; i <= total; i++) { //当超过总页数时
if (i > pagetest.getTotalSize()) {
break;
} testList.add(i+"");
} model = new ListModelList<String>(testList);
listbox.setModel(model);
}
}

效果:

ZK listbox 两种分页使用及比较的更多相关文章

  1. SQL Server两种分页的存储过程介绍

          由于现在很多的企业招聘的笔试都会让来招聘的写一个分页的存储过程,有的企业甚至要求应聘者用两种方式实现分页,如果没有在实际项目中使用过分页,那么很多的应聘者都会出现一定的问题,下面介绍两种分 ...

  2. PostgreSQL两种分页方法查询时间比较

    数据库中存了3000W条数据,两种分页查询测试时间 第一种 SELECT * FROM test_table WHERE i_id> limit 100; Time: 0.016s 第二种 SE ...

  3. sql server两种分页方法

    方法一: --分页方法一 OrderID,CustomerID, EmployeeID,OrderDate,ShippedDate,ShipName,ShipAddress,Freight from ...

  4. lucene的两种分页操作

    基于lucene的分页有两种: lucene3.5之前分页提供的方式为再查询方式(每次查询全部记录,然后取其中部分记录,这种方式用的最多),lucene官方的解释:由于我们的速度足够快.处理海量数据时 ...

  5. springboot 注册服务注册中心(zk)的两种方式

    在使用springboot进行开发的过程中,我们经常需要处理这样的场景:在服务启动的时候,需要向服务注册中心(例如zk)注册服务状态,以便当服务状态改变的时候,可以故障摘除和负载均衡. 我遇到过两种注 ...

  6. 基于layPage分页插件浅析两种分页方式

    最近在开发过程中经常用到分页,今天挤出些时间来捋一捋自己的经验 在web开发中,一般显示数据列表页时,我们会用到分页控件来显示数据.采用分页一般基于两种不同的需求,一种是数据量不算很大,但是在页面展示 ...

  7. Oracle 分页 ROWNUM 两种分页方法和ROWID用法

    一 原因一 oracle默认为每个表生成rowmun,rowid字段,这些字段我们称之为伪列 测试表 CREATE TABLE A ( AID NUMBER() primary key, ANAME ...

  8. Mybatis-plus的两种分页插件的配置方式

    第一种: package com.paic.ocss.gateway.admin.config; import com.baomidou.mybatisplus.plugins.PaginationI ...

  9. SpringBoot+Mybatis-Plus两种分页方法

    用到的依赖: <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus ...

随机推荐

  1. Android--UI之Spinner

    前言 最近一直在讲AndroidUI的开发,今天讲一下Spinner控件,这是一个列表选择框,可以弹出一个列表供用户选择.在本片博客中,会讲解Spinner的基本属性以及设置之后的效果,以及使用Sim ...

  2. jdbctemplate中的批量更新使用,BigDecimal与造型的联系和区别

    //jdbctemplate批量新增的使用MENU_ID_LIST是前端页面传递到后端控制层,再由控制层传到实现层的List //JdbcTemplate是spring jdbctemplate通过注 ...

  3. js 时间构造函数

    js 时间构造函数,js中没有类似ToString("yyyy-mm-dd HH:mm:ss") 的方法,但是可以用下面的方式来初始化 var cdate = new Date(& ...

  4. libevent在windows平台下通过vs进行编译

    1.vs中新建一个静态库项目 2.配置头文件目录,将./compat../include../WIN32-Code三个目录添加到文件目录中 3.用记事本打开Makefile.nmake文件,可以看到里 ...

  5. ios cocopods 安装使用及高级教程

    CocoaPods简介 每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如Java语言的Maven,nodejs的npm.随着iOS开发者的增多,业界也出现了为iOS程序提供依赖管理的工具,它的 ...

  6. css3 transition

    <html>   <head lang="en">   <meta charset="UTF-8">   <title ...

  7. Fiddler

    Fiddler教程: 原文:http://kb.cnblogs.com/page/130367/

  8. NPOI导出Excel - 自动适应中文宽度(帮助类下载)

    前言 做了好几个Excel.Word导出,用了HTTP流导出伪Excel文件.用过Office组件(这东西在生产环境下相当麻烦,各种权限,**). 最后决定使用NPOI组件来导出,好处很多很多了,这里 ...

  9. POJ 3294 Life Forms 后缀数组+二分 求至少k个字符串中包含的最长子串

    Life Forms   Description You may have wondered why most extraterrestrial life forms resemble humans, ...

  10. Android onActivityResult没响应

    原因: 1.当MainActivity2的启动模式为SingleTask时, 系统为自动返回setResult(Activity.RESULT_CANCELED). 2.当为MainActivity2 ...