-
FEATURED COMPONENTS
First time here? Check out the FAQ!
Hi there - I'm rather new to zk and need help:
I want to build my grid depending on some selections. This is working fine including the "auto" menu.
But I would additionally like to make columns sortable and can not find how to define this.
so my simple example is
myColumn.setLabel(value[0]);
myColumn.setWidth(value[1]);
if (value[2].equals("y"))
{
//column sortable
}
if (value[3].equals("y"))
myColumn.setVisible(true);
else
myColumn.setVisible(false);
So setting the label and switching on and of visibility via menu works fine ... but how do I define the sorting?
Hi,peuspi
those samples is sort with Primitive Data Types , bean or bean field
bean
package test; public class Item implements Comparable { private int _value; private String _data; public Item(int value, String data) { super(); this._value = value; this._data = data; } public int getValue() { return this._value; } public String getData() { return this._data; } public int compareTo(Object obj) throws ClassCastException { if (!(obj instanceof Item)) throw new ClassCastException("Error msg here."); Item Itemobj = (Item) obj; return this._data.compareTo(Itemobj.getData()); } }
zul
<zk> <window apply="ctrl.Composer"> <grid id="g1"> <columns> <column label="data" sort="auto"/> </columns> </grid> <grid id="g2"> <columns> <column label="value" sort="auto(value)"/> <column label="data" sort="auto"/> </columns> </grid> </window> </zk>
composer
package ctrl; import java.util.*; import org.zkoss.lang.Strings; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zul.*; import test.Item; public class Composer extends GenericForwardComposer { private Grid g1, g2; @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); List<String> list = new ArrayList<String>(); list.add("A"); list.add("B"); list.add("C"); List<Item> list2 = new ArrayList<Item>(); list2.add(new Item(2, "a")); list2.add(new Item(1, "b")); list2.add(new Item(3, "c")); ListModel model = new ListModelList(list); ListModel model2 = new ListModelList(list2); RowRenderer rowRenderer = new MyRowRenderer(); g1.setModel(model); g2.setModel(model2); g2.setRowRenderer(rowRenderer); } private class MyRowRenderer implements RowRenderer { public void render(Row row, Object data) { Item item = (Item) data; new Label(item.getValue() + "").setParent(row); new Label(item.getData()).setParent(row); } } }
if you set sort = "auto", it must be Comparable object or Primitive Data Types
you can sort with bean field, ex: auto(XXX) ,and bean must be have getXXX method and sort return value
Asked: 2009-11-05 06:53:07 +0800
Seen: 2,699 times
Last updated: Nov 05 '09