前台(test.zul):

  1. <?page title="测试" contentType="text/html;charset=UTF-8"?>
  2. <z:zk xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns:z="http://www.zkoss.org/2005/zul"
  4. xsi:schemaLocation="http://www.zkoss.org/2005/zul http://www.zkoss.org/2005/zul">
  5.  
  6. <z:window id="gradingWin" border="none" apply="test.ListboxCtrl">
  7. <z:listbox id="testListbox">
  8. <z:listhead>
  9. <z:listheader id="fullName" label="Full Name"/>
  10. <z:listheader id="age" label="Age"/>
  11. </z:listhead>
  12. </z:listbox>
  13. <z:label style="color:red;font-size:30px;" value="修改fullName为wwee的Age为50"/>
  14. <z:button id="testBtn" label="修改"></z:button>
  15. </z:window>
  16. </z:zk>

后台(test.java):

  1. package test;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Comparator;
  5. import java.util.List;
  6.  
  7. import org.zkoss.zk.ui.Component;
  8. import org.zkoss.zk.ui.event.Event;
  9. import org.zkoss.zk.ui.event.EventListener;
  10. import org.zkoss.zk.ui.event.Events;
  11. import org.zkoss.zk.ui.util.GenericForwardComposer;
  12. import org.zkoss.zul.Button;
  13. import org.zkoss.zul.ListModelList;
  14. import org.zkoss.zul.Listbox;
  15. import org.zkoss.zul.Listcell;
  16. import org.zkoss.zul.Listheader;
  17. import org.zkoss.zul.Listitem;
  18. import org.zkoss.zul.ListitemRenderer;
  19. import org.zkoss.zul.Window;
  20.  
  21. public class ListboxCtrl extends GenericForwardComposer<Component>{
  22.  
  23. private static final long serialVersionUID = 1L;
  24.  
  25. private ListModelList<Person> testmodel;
  26. private Listbox testListbox;
  27. private Listheader fullName;
  28. private Listheader age;
  29.  
  30. private Button testBtn;
  31.  
  32. Window gradingWin;
  33.  
  34. @Override
  35. public void doAfterCompose(Component comp) throws Exception {
  36.  
  37. // TODO Auto-generated method stub
  38. super.doAfterCompose(comp);
  39.  
  40. //填充测试数据
  41. Person person = new Person();
  42. List<Person> persons = person.getPersons();
  43.  
  44. // 设置数据模型
  45. testmodel = new ListModelList<Person>(persons);
  46. testListbox.setModel(testmodel);
  47. testListbox.setItemRenderer(new testItemRenderer());
  48.  
  49. //设置分页
  50. testListbox.setMold("paging");
  51. testListbox.getPagingChild().setAutohide(false);
  52. fullName.setSort("auto");//必须设置,否则无法使用升、降序排列功能(zk规定)
  53. age.setSort("auto");//同上
  54.  
  55. // 按姓名升序
  56. ComparatorName comparatorName = new ComparatorName();
  57. fullName.setSortAscending(comparatorName);
  58. // 按姓名降序
  59. ComparatorDescName comparatorDescName = new ComparatorDescName();
  60. fullName.setSortDescending(comparatorDescName);
  61.  
  62. // 按年龄升序
  63. ComparatorAge comparatorAge = new ComparatorAge();
  64. age.setSortAscending(comparatorAge);
  65. // 按年龄降序
  66. ComparatorDescAge comparatorDescAge = new ComparatorDescAge();
  67. age.setSortDescending(comparatorDescAge);
  68.  
  69. testBtn.addEventListener(Events.ON_CLICK, new EventListener<Event>() {
  70.  
  71. @Override
  72. public void onEvent(Event event) throws Exception {
  73. // TODO Auto-generated method stub
  74. ListModelList<Person> model = (ListModelList) testListbox.getModel();
  75. for (int i = 0; i < model.size(); i++) {
  76. Person c = (Person) model.get(i);
  77. if (c.getFullName().equals("wwee")) {
  78. c.setAge(50);
  79. model.set(i, c);
  80. break;
  81. }
  82. }
  83. }
  84. });
  85. }
  86.  
  87. public class testItemRenderer implements ListitemRenderer<Person>{
  88.  
  89. @Override
  90. public void render(Listitem item, Person person, int index)
  91. throws Exception {
  92. // TODO Auto-generated method stub
  93.  
  94. new Listcell(person.getFullName()).setParent(item);
  95. new Listcell(person.getAge()+"").setParent(item);
  96. }
  97. }
  98.  
  99. public class ComparatorAge implements Comparator<Person>{
  100.  
  101. @Override
  102. public int compare(Person o1, Person o2) {
  103. // TODO Auto-generated method stub
  104. if (o1.getAge() > o2.getAge()) {
  105. return 1;
  106. }else if (o1.getAge() < o2.getAge()){
  107. return -1;
  108. }else {
  109. return 0;
  110. }
  111. }
  112. }
  113.  
  114. public class ComparatorDescAge implements Comparator<Person>{
  115.  
  116. @Override
  117. public int compare(Person o1, Person o2) {
  118. // TODO Auto-generated method stub
  119. if (o1.getAge() < o2.getAge()) {
  120. return 1;
  121. }else if (o1.getAge() > o2.getAge()){
  122. return -1;
  123. }else {
  124. return 0;
  125. }
  126. }
  127. }
  128.  
  129. public class ComparatorName implements Comparator<Person>{
  130.  
  131. @Override
  132. public int compare(Person o1, Person o2) {
  133. // TODO Auto-generated method stub
  134.  
  135. return o1.getFirstName().compareTo(o2.getFirstName());
  136. }
  137. }
  138.  
  139. public class ComparatorDescName implements Comparator<Person>{
  140.  
  141. @Override
  142. public int compare(Person o1, Person o2) {
  143. // TODO Auto-generated method stub
  144.  
  145. return o2.getFirstName().compareTo(o1.getFirstName());
  146. }
  147. }
  148. }
  149.  
  150. class Person implements Comparator <Person> {
  151.  
  152. private String firstName;
  153. private String lastName;
  154. private String fullName;
  155. private int age;
  156. List<Person> persons = new ArrayList<Person>();
  157.  
  158. public Person(String f, String l, int a) {
  159. firstName = f;
  160. lastName = l;
  161. age = a;
  162. fullName = f+l;
  163. }
  164.  
  165. public Person(){
  166. persons.add(new Person("a", "b", 2));
  167. persons.add(new Person("a", "b", 3));
  168. persons.add(new Person("a", "b", 4));
  169. persons.add(new Person("cc", "dd", 2));
  170. persons.add(new Person("cc", "dd", 3));
  171. persons.add(new Person("cc", "dd", 4));
  172. persons.add(new Person("ww", "ee", 23));
  173. }
  174.  
  175. public String getFirstName() {
  176. return firstName;
  177. }
  178. public String getLastName() {
  179. return lastName;
  180. }
  181. public String getFullName() {
  182. return fullName;
  183. }
  184. public void setFullName(String fullName){
  185. this.fullName = fullName;
  186. }
  187. public void setAge(int age){
  188. this.age = age;
  189. }
  190. public int getAge() {
  191. return age;
  192. }
  193. public List<Person> getPersons(){
  194. return persons;
  195. }
  196.  
  197. @Override
  198. public int compare(Person o1, Person o2) {
  199. // TODO Auto-generated method stub
  200. return 0;
  201. }
  202. }

zk listbox 点击列标题实现排序功能的更多相关文章

  1. datagridview 点击列标题排序

    开发winform中,平时经常用到数据列表,我们大多选用datagridview,但是此控件本身没有排序的功能.参阅网上资料.留下标记,以后备用. datagridview的数据显示一般是通过数据绑定 ...

  2. WPF中的DataGridTemplateColumn实现点击列标题排序

    在DataGrid中使用模板列时,默认功能中对点击列标题是不对列值进行排序的,要排序就需要添加以下两个属性: 1.CanUserSort="True" 2.SortMemberPa ...

  3. winform dataGridView 点击列标题排序

    winform手动绑定数据后,点击列标题不能实现自动排序,苦苦寻找方法,发现下面的是可行的. //建立DataTable将当前dataGridView中的数据读进DataTable中 public D ...

  4. 在 Students 的 Index 页面增加列标题链接(排序),分页,过滤和分组功能

    3-1  在 Students 的 Index 页面增加列标题链接 为 Index 页面增加排序的功能,我们需要修改 Student 控制器的 Index 方法,还需要为 Student 视图增加代码 ...

  5. datatable 修改点击列头进行排序顺序

    一般点击排序时,是先升序后降序 可以通过如下代码修改排序规则 jQuery(function ($) { $(".datatable").dataTable({ "pag ...

  6. C# ListView点击列头进行排序

    /// <summary> /// This class is an implementation of the 'IComparer' interface. /// </summa ...

  7. jquery easyui datagrid 如何第一次点击列标题时是降序排列

    使用 EasyUI的onBeforeLoad事件,在发回到服务器查询之前,修改排序和对应的图标样式. 1.配置回调函数 data-options='onBeforeLoad:fnOnBeforeLoa ...

  8. C# listview 单击列头实现排序 <二>

    单击列头实现排序,首先在羡慕中添加下面的帮助实现的类:具体的代码: using System; using System.Collections; using System.Windows.Forms ...

  9. C#:ListView控件如何实现点击列表头进行排序?

    using System; using System.Collections; using System.Windows.Forms; namespace Common { /// <summa ...

随机推荐

  1. POJ 1840 Eqs 二分+map/hash

    Description Consider equations having the following form: a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0 The co ...

  2. 内核函数KiFastCallEntry

    KiFastCallEntry() 机制分析 概述 Win32 子系统 API 调用 ntdll!ZwWriteFile() 函数 ntdll!KiFastSystemCall() 函数 _KUSER ...

  3. json对象的解析

    json对象数据: { "status": "200", "code": "", "msg": &q ...

  4. 【POI word】使用POI实现对Word的读取以及生成

    项目结构如下: 那第一部分:先是读取Word文档 package com.it.WordTest; import java.io.FileInputStream; import java.io.Fil ...

  5. python 线程之 threading(一)

    threading:基于对象和类的较高层面上的接口,threading模块在内部使用_thread模块来实现线程的对象以及常用的同步化工具的功能. 使用定制类的方式继承 threading.Threa ...

  6. java发送短信--httpclient方式

    最近头让我写个发送短信的java程序检测BI系统,检查数据库是否有异常发送,有则发送短信到头的手机里.这里我直说httpclient方式的get请求方式,并且已经有方式的短信的接口了,所以只要再加上参 ...

  7. 并查集(涂色问题) HDOJ 4056 Draw a Mess

    题目传送门 题意:给出一个200 * 50000的像素点矩阵,执行50000次操作,每次把一个矩形/圆形/菱形/三角形内的像素点涂成指定颜色,问最后每种颜色的数量. 分析:乍一看,很像用线段树成段更新 ...

  8. Kafka 分布式消息队列介绍

    Kafka 分布式消息队列 类似产品有JBoss.MQ 一.由Linkedln 开源,使用scala开发,有如下几个特点: (1)高吞吐 (2)分布式 (3)支持多语言客户端 (C++.Java) 二 ...

  9. 【SAP Business Objects】Universe中的@prompt语法

    @Prompt 函数的语法: @Prompt('message','type',[lov],Mono|Multi,free|constrained|primary_key,persistent|not ...

  10. AngularJS学习笔记之directive—scope选项与绑定策略

    From:http://www.linuxidc.com/Linux/2015-05/116924.htm scope:{}使指令与外界隔离开来,使其模板(template)处于non-inherit ...