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 ...
随机推荐
- SQL SERVER数据库的表中修改字段的数据类型后,不能保存
在数据库里面建了一个表,可是由于对SQL SERVER的建表功能不熟悉,不知道把主键设成什么是好,就先设置了个TEXT类型,可是后来朋友们告诉我说,TEXT类型容易让数据文件变得很大,还 是改成一 ...
- jq获取后台json并解析
参考: $(function () { $.ajax({ url: 'tsconfig.json', type: 'GET', dataType: 'json', timeout: 1000, cac ...
- SQL简繁转换函数
declare @jall nvarchar(4000),@fall nvarchar(4000) select @jall=N'啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊 ...
- ThinkPHP去重 distinct和group by
转自:http://blog.csdn.net/helencoder/article/details/50328629 近期项目中,遇到数据表去重要求,对于ThinkPHP的去重有了更加准确的认识和体 ...
- 解决android expandablelistview 里面嵌入gridview行数据重复问题
最近做了一个“csdn专家博客App” 当然了是android版本,在专家浏览页面,我才用了expandablelistview 组件来显示专家分类,每个分类点击之后可以显示专家的头像和名字. 很简单 ...
- 【转】Hive配置文件中配置项的含义详解(收藏版)
http://www.aboutyun.com/thread-7548-1-1.html 这里面列出了hive几乎所有的配置项,下面问题只是说出了几种配置项目的作用.更多内容,可以查看内容问题导读:1 ...
- python 类型判断-- isinstance函数
判断类型 函数isinstance()可以判断一个变量的类型,既可以用在Python内置的数据类型如str.list.dict,也可以用在我们自定义的类,它们本质上都是数据类型. 假设有如下的 Per ...
- C#开发微信公众平台-就这么简单(附Demo)(转)
原文:http://www.cnblogs.com/xishuai/p/3625859.html 写在前面 阅读目录: 服务号和订阅号 URL配置 创建菜单 查询.删除菜单 接受消息 发送消息(图文. ...
- Codeforces Round #355 (Div. 2)-B
B. Vanya and Food Processor 题目链接:http://codeforces.com/contest/677/problem/B Vanya smashes potato in ...
- node.js整理 05进程管理
简介 NodeJS可以感知和控制自身进程的运行环境和状态,也可以创建子进程并与其协同工作,这使得NodeJS可以把多个程序组合在一起共同完成某项工作,并在其中充当胶水和调度器的作用 常用API Pro ...