zk listbox 点击列标题实现排序功能
前台(test.zul):
- <?page title="测试" contentType="text/html;charset=UTF-8"?>
- <z:zk xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:z="http://www.zkoss.org/2005/zul"
- xsi:schemaLocation="http://www.zkoss.org/2005/zul http://www.zkoss.org/2005/zul">
- <z:window id="gradingWin" border="none" apply="test.ListboxCtrl">
- <z:listbox id="testListbox">
- <z:listhead>
- <z:listheader id="fullName" label="Full Name"/>
- <z:listheader id="age" label="Age"/>
- </z:listhead>
- </z:listbox>
- <z:label style="color:red;font-size:30px;" value="修改fullName为wwee的Age为50"/>
- <z:button id="testBtn" label="修改"></z:button>
- </z:window>
- </z:zk>
后台(test.java):
- package test;
- import java.util.ArrayList;
- import java.util.Comparator;
- 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.event.Events;
- import org.zkoss.zk.ui.util.GenericForwardComposer;
- import org.zkoss.zul.Button;
- import org.zkoss.zul.ListModelList;
- import org.zkoss.zul.Listbox;
- import org.zkoss.zul.Listcell;
- import org.zkoss.zul.Listheader;
- import org.zkoss.zul.Listitem;
- import org.zkoss.zul.ListitemRenderer;
- import org.zkoss.zul.Window;
- public class ListboxCtrl extends GenericForwardComposer<Component>{
- private static final long serialVersionUID = 1L;
- private ListModelList<Person> testmodel;
- private Listbox testListbox;
- private Listheader fullName;
- private Listheader age;
- private Button testBtn;
- Window gradingWin;
- @Override
- public void doAfterCompose(Component comp) throws Exception {
- // TODO Auto-generated method stub
- super.doAfterCompose(comp);
- //填充测试数据
- Person person = new Person();
- List<Person> persons = person.getPersons();
- // 设置数据模型
- testmodel = new ListModelList<Person>(persons);
- testListbox.setModel(testmodel);
- testListbox.setItemRenderer(new testItemRenderer());
- //设置分页
- testListbox.setMold("paging");
- testListbox.getPagingChild().setAutohide(false);
- fullName.setSort("auto");//必须设置,否则无法使用升、降序排列功能(zk规定)
- age.setSort("auto");//同上
- // 按姓名升序
- ComparatorName comparatorName = new ComparatorName();
- fullName.setSortAscending(comparatorName);
- // 按姓名降序
- ComparatorDescName comparatorDescName = new ComparatorDescName();
- fullName.setSortDescending(comparatorDescName);
- // 按年龄升序
- ComparatorAge comparatorAge = new ComparatorAge();
- age.setSortAscending(comparatorAge);
- // 按年龄降序
- ComparatorDescAge comparatorDescAge = new ComparatorDescAge();
- age.setSortDescending(comparatorDescAge);
- testBtn.addEventListener(Events.ON_CLICK, new EventListener<Event>() {
- @Override
- public void onEvent(Event event) throws Exception {
- // TODO Auto-generated method stub
- ListModelList<Person> model = (ListModelList) testListbox.getModel();
- for (int i = 0; i < model.size(); i++) {
- Person c = (Person) model.get(i);
- if (c.getFullName().equals("wwee")) {
- c.setAge(50);
- model.set(i, c);
- break;
- }
- }
- }
- });
- }
- public class testItemRenderer implements ListitemRenderer<Person>{
- @Override
- public void render(Listitem item, Person person, int index)
- throws Exception {
- // TODO Auto-generated method stub
- new Listcell(person.getFullName()).setParent(item);
- new Listcell(person.getAge()+"").setParent(item);
- }
- }
- public class ComparatorAge implements Comparator<Person>{
- @Override
- public int compare(Person o1, Person o2) {
- // TODO Auto-generated method stub
- if (o1.getAge() > o2.getAge()) {
- return 1;
- }else if (o1.getAge() < o2.getAge()){
- return -1;
- }else {
- return 0;
- }
- }
- }
- public class ComparatorDescAge implements Comparator<Person>{
- @Override
- public int compare(Person o1, Person o2) {
- // TODO Auto-generated method stub
- if (o1.getAge() < o2.getAge()) {
- return 1;
- }else if (o1.getAge() > o2.getAge()){
- return -1;
- }else {
- return 0;
- }
- }
- }
- public class ComparatorName implements Comparator<Person>{
- @Override
- public int compare(Person o1, Person o2) {
- // TODO Auto-generated method stub
- return o1.getFirstName().compareTo(o2.getFirstName());
- }
- }
- public class ComparatorDescName implements Comparator<Person>{
- @Override
- public int compare(Person o1, Person o2) {
- // TODO Auto-generated method stub
- return o2.getFirstName().compareTo(o1.getFirstName());
- }
- }
- }
- class Person implements Comparator <Person> {
- private String firstName;
- private String lastName;
- private String fullName;
- private int age;
- List<Person> persons = new ArrayList<Person>();
- public Person(String f, String l, int a) {
- firstName = f;
- lastName = l;
- age = a;
- fullName = f+l;
- }
- public Person(){
- persons.add(new Person("a", "b", 2));
- persons.add(new Person("a", "b", 3));
- persons.add(new Person("a", "b", 4));
- persons.add(new Person("cc", "dd", 2));
- persons.add(new Person("cc", "dd", 3));
- persons.add(new Person("cc", "dd", 4));
- persons.add(new Person("ww", "ee", 23));
- }
- public String getFirstName() {
- return firstName;
- }
- public String getLastName() {
- return lastName;
- }
- public String getFullName() {
- return fullName;
- }
- public void setFullName(String fullName){
- this.fullName = fullName;
- }
- public void setAge(int age){
- this.age = age;
- }
- public int getAge() {
- return age;
- }
- public List<Person> getPersons(){
- return persons;
- }
- @Override
- public int compare(Person o1, Person o2) {
- // TODO Auto-generated method stub
- return 0;
- }
- }
zk listbox 点击列标题实现排序功能的更多相关文章
- datagridview 点击列标题排序
开发winform中,平时经常用到数据列表,我们大多选用datagridview,但是此控件本身没有排序的功能.参阅网上资料.留下标记,以后备用. datagridview的数据显示一般是通过数据绑定 ...
- WPF中的DataGridTemplateColumn实现点击列标题排序
在DataGrid中使用模板列时,默认功能中对点击列标题是不对列值进行排序的,要排序就需要添加以下两个属性: 1.CanUserSort="True" 2.SortMemberPa ...
- winform dataGridView 点击列标题排序
winform手动绑定数据后,点击列标题不能实现自动排序,苦苦寻找方法,发现下面的是可行的. //建立DataTable将当前dataGridView中的数据读进DataTable中 public D ...
- 在 Students 的 Index 页面增加列标题链接(排序),分页,过滤和分组功能
3-1 在 Students 的 Index 页面增加列标题链接 为 Index 页面增加排序的功能,我们需要修改 Student 控制器的 Index 方法,还需要为 Student 视图增加代码 ...
- datatable 修改点击列头进行排序顺序
一般点击排序时,是先升序后降序 可以通过如下代码修改排序规则 jQuery(function ($) { $(".datatable").dataTable({ "pag ...
- C# ListView点击列头进行排序
/// <summary> /// This class is an implementation of the 'IComparer' interface. /// </summa ...
- jquery easyui datagrid 如何第一次点击列标题时是降序排列
使用 EasyUI的onBeforeLoad事件,在发回到服务器查询之前,修改排序和对应的图标样式. 1.配置回调函数 data-options='onBeforeLoad:fnOnBeforeLoa ...
- C# listview 单击列头实现排序 <二>
单击列头实现排序,首先在羡慕中添加下面的帮助实现的类:具体的代码: using System; using System.Collections; using System.Windows.Forms ...
- C#:ListView控件如何实现点击列表头进行排序?
using System; using System.Collections; using System.Windows.Forms; namespace Common { /// <summa ...
随机推荐
- POJ 1840 Eqs 二分+map/hash
Description Consider equations having the following form: a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0 The co ...
- 内核函数KiFastCallEntry
KiFastCallEntry() 机制分析 概述 Win32 子系统 API 调用 ntdll!ZwWriteFile() 函数 ntdll!KiFastSystemCall() 函数 _KUSER ...
- json对象的解析
json对象数据: { "status": "200", "code": "", "msg": &q ...
- 【POI word】使用POI实现对Word的读取以及生成
项目结构如下: 那第一部分:先是读取Word文档 package com.it.WordTest; import java.io.FileInputStream; import java.io.Fil ...
- python 线程之 threading(一)
threading:基于对象和类的较高层面上的接口,threading模块在内部使用_thread模块来实现线程的对象以及常用的同步化工具的功能. 使用定制类的方式继承 threading.Threa ...
- java发送短信--httpclient方式
最近头让我写个发送短信的java程序检测BI系统,检查数据库是否有异常发送,有则发送短信到头的手机里.这里我直说httpclient方式的get请求方式,并且已经有方式的短信的接口了,所以只要再加上参 ...
- 并查集(涂色问题) HDOJ 4056 Draw a Mess
题目传送门 题意:给出一个200 * 50000的像素点矩阵,执行50000次操作,每次把一个矩形/圆形/菱形/三角形内的像素点涂成指定颜色,问最后每种颜色的数量. 分析:乍一看,很像用线段树成段更新 ...
- Kafka 分布式消息队列介绍
Kafka 分布式消息队列 类似产品有JBoss.MQ 一.由Linkedln 开源,使用scala开发,有如下几个特点: (1)高吞吐 (2)分布式 (3)支持多语言客户端 (C++.Java) 二 ...
- 【SAP Business Objects】Universe中的@prompt语法
@Prompt 函数的语法: @Prompt('message','type',[lov],Mono|Multi,free|constrained|primary_key,persistent|not ...
- AngularJS学习笔记之directive—scope选项与绑定策略
From:http://www.linuxidc.com/Linux/2015-05/116924.htm scope:{}使指令与外界隔离开来,使其模板(template)处于non-inherit ...