0

dynamic grid and sorting

asked 2009-11-05 06:53:07 +0800

peuspi gravatar image peuspi
12 1 1

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?

delete flag offensive retag edit

3 Replies

Sort by ยป oldest newest

answered 2009-11-05 07:16:56 +0800

mixgho gravatar image mixgho
193 3

I gues you've tried this

myColumn.setSort("auto")

but I just want to make sure :)

link publish delete flag offensive edit

answered 2009-11-05 07:20:30 +0800

peuspi gravatar image peuspi
12 1 1

Yes - but it just seemed this does nothing ... maybe I need to define something in addition ?

link publish delete flag offensive edit

answered 2009-11-05 20:59:28 +0800

jimmyshiau gravatar image jimmyshiau
4921 5
http://www.zkoss.org/ ZK Team

updated 2009-11-05 21:03:06 +0800

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

link publish delete flag offensive edit
Your reply
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

[hide preview]

Question tools

Follow

RSS

Stats

Asked: 2009-11-05 06:53:07 +0800

Seen: 2,699 times

Last updated: Nov 05 '09

Support Options
  • Email Support
  • Training
  • Consulting
  • Outsourcing
Learn More