Suggested case list:
Using timer to refresh a grid
383guest172.69.33.12125nk0uiMay 7, 2020 7:23:47 AMlinkuser model to move item to another listbox
120guest162.158.193.148d0n3krApr 2, 2020 5:28:28 AMlinkDisabled list item row passed to VM-1981
296fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:44 PMlinkDisabled list item row passed to VM-1981
295fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:16 PMlinkDisabled list item row passed to VM-1981
294fatih123160.83.36.13225nk0uiFeb 13, 2018 3:30:44 PMlinkgrid sample with ListModel/RowRenderer
816guest80.82.2.1312vah9ajFeb 21, 2017 11:42:21 AMlinkgrid sample with ListModel/RowRenderer
809guest175.98.113.1622vah9ajJan 26, 2017 9:19:33 AMlinkgrid sample with ListModel/RowRenderer
196guest79.185.142.402vah9ajApr 26, 2014 10:53:57 PMlinkgrid sample with ListModel/RowRenderer
195guest79.185.142.402vah9ajApr 26, 2014 10:53:54 PMlinkgrid sample with ListModel/RowRenderer
194guest79.185.142.402vah9ajApr 26, 2014 10:53:51 PMlinkgrid sample with ListModel/RowRenderer
193guest79.185.142.402vah9ajApr 26, 2014 10:53:48 PMlinkgrid sample with ListModel/RowRenderer
192guest79.185.142.402vah9ajApr 26, 2014 10:53:44 PMlinkgrid sample with ListModel/RowRenderer
191guest79.185.142.402vah9ajApr 26, 2014 10:53:40 PMlinkHierarchy table without using ZK PE/EE
1aaknai151.28.135.2131s871daJul 29, 2013 11:02:46 PMlinkgrid sample with ListModel/RowRenderer
128aaknai151.28.135.2132vah9ajJul 29, 2013 7:20:00 PMlinkuser model to move item to another listbox
1TonyQ114.25.109.94d0n3krApr 21, 2012 10:43:27 AMlinkUsing timer to refresh a grid
1TonyQ220.133.44.3725nk0uiFeb 17, 2012 3:17:34 AMlinkFire a event from child iframe
1TonyQ220.133.44.372eupjotFeb 3, 2012 5:04:52 AMlinkTextbox input restriction sample
1TonyQ72.21.245.2431b3nlr0Dec 20, 2011 10:09:10 AMlinkTest web core taglib in ZUL
1TonyQ198.203.175.175ofqkemDec 17, 2011 3:36:08 AMlinkLatest 10 Fiddles :
constraint binding textbox
3guest172.68.151.16220peldaDec 5, 2025 5:08:19 PMlinkAnother new ZK fiddle
2guest172.68.151.16320peldaDec 5, 2025 5:07:51 PMlinkAnother new ZK fiddle
1guest172.68.151.16220peldaDec 5, 2025 5:07:32 PMlinkAnother new ZK fiddle
1peggypeng172.71.154.99364f4neDec 5, 2025 9:24:31 AMlinktooltip example
2guest104.22.23.13rc1ntoDec 4, 2025 2:23:45 PMlinkAnother new ZK fiddle
1guest172.69.134.2277t7602Dec 4, 2025 1:40:46 PMlinkAnother new ZK fiddle
1peggypeng104.22.17.1802df6e3oDec 4, 2025 8:41:29 AMlinkonClose
1peggypeng172.68.87.248j8kd8aDec 3, 2025 4:10:26 AMlinkAnother new ZK fiddle
1peggypeng172.69.134.2271rm7f4eNov 26, 2025 3:31:24 AMlinkZK-5912-Suggestion
2rebeccalai104.22.20.1442qrmiiuNov 26, 2025 2:07:15 AMlinkZK-3863
2guest141.101.77.16029k0b7mJan 28, 2021 2:29:46 PMlinkresources
index.zulzul<zk xmlns:w="client" xmlns:html="xhtml" xmlns:zk="zk">
<window apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('pkg$.MainVM')" width="100%" height="100%">
<button label="Open" onClick="@command('open')" visible="@load(not vm.visible)" />
<button label="Close" onClick="@command('close')" visible="@load(vm.visible)" />
<apply template="FILTER_DIV" folder="@ref(vm.folder)" />
</window>
<template name="FILTER_DIV">
<div width="600px" visible="@load(vm.visible)">
<vlayout height="100%" >
<hlayout>
<label value="Filters size: " />
<label value="@load(folder.filters.size())" />
</hlayout>
<forEach items="@load(folder.filters)" var="filterItem">
<apply if="${filterItem.open}" template="FILTER_ITEM" filterItem="@ref(filterItem)" folder="@ref(vm.folder)" />
</forEach>
<forEach items="@load(folder.filters)" var="filterItem">
<apply if="${not filterItem.open}" template="FILTER_ITEM" filterItem="@ref(filterItem)" folder="@ref(vm.folder)" />
</forEach>
</vlayout>
</div>
</template>
<template name="FILTER_ITEM">
<groupbox mold="3d" open="@bind(vm.filterItem.open)" id="groupbox_${filterItem.label}" w:onBind="this._cdo = false"
apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('pkg$.FilterItemVM', folder=folder, filterItem=filterItem)">
<caption label="${vm.filterItem.label}" iconSclass="z-icon-chevron-down" />
<div sclass="griditem">
<listbox model="@load(vm.filterItem.items)" checkmark="true" hflex="max">
<listhead>
<listheader label="Name" />
<listheader label="Price" align="center" width="80px" />
<listheader label="Quantity" align="center" width="80px" />
</listhead>
<template name="model" var="item">
<listitem >
<listcell label="@init(item.name)" />
<listcell label="@init(item.price)" />
<listcell label="@init(item.quantity)" />
</listitem>
</template>
</listbox>
</div>
</groupbox>
</template>
</zk>MainVM.javajavaimport java.util.*;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.NotifyChange;
import org.zkoss.zk.ui.*;
import org.zkoss.zk.ui.event.*;
import org.zkoss.zk.ui.util.*;
import org.zkoss.zk.ui.ext.*;
import org.zkoss.zk.au.*;
import org.zkoss.zk.au.out.*;
import org.zkoss.zul.*;
import org.zkoss.bind.annotation.*;
import org.zkoss.zkmax.ui.util.Toast;
import org.zkoss.bind.BindUtils;
public class MainVM {
private boolean _visible = false;
private Folder _folder = new Folder();
public Folder getFolder() {
return _folder;
}
public boolean isVisible() {
return _visible;
}
public void setVisible(boolean visible) {
//Toast.show("visible="+visible);
_visible=visible;
}
@Command
public void open() {
Toast.show("calling 'open' from MainVM");
setVisible(true);
BindUtils.postNotifyChange(null, null, this, "visible");
}
@Command
public void close() {
Toast.show("calling 'close' from MainVM");
setVisible(false);
BindUtils.postNotifyChange(null, null, this, "visible");
}
}
Item.javajavapublic class Item {
private String _name;
private int _price;
private int _quantity;
public Item () {
}
public Item (String name, int price, int quantity) {
setName (name);
setPrice (price);
setQuantity (quantity);
}
public void setName (String name) {
_name = name;
}
public String getName () {
return _name;
}
public void setPrice (int price) {
_price = price;
}
public int getPrice () {
return _price;
}
public void setQuantity (int quantity) {
_quantity = quantity;
}
public int getQuantity () {
return _quantity;
}
public String toString() {
return _name;
}
}
FilterItemVM.javajavaimport java.util.*;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.NotifyChange;
import org.zkoss.zk.ui.*;
import org.zkoss.zk.ui.event.*;
import org.zkoss.zk.ui.util.*;
import org.zkoss.zk.ui.ext.*;
import org.zkoss.zk.au.*;
import org.zkoss.zk.au.out.*;
import org.zkoss.zul.*;
import org.zkoss.bind.annotation.*;
import org.zkoss.zkmax.ui.util.Toast;
import org.zkoss.bind.BindUtils;
import org.zkoss.bind.annotation.Init;
public class FilterItemVM {
private Folder _folder;
private FilterItem _filterItem;
@Init
public void init(@BindingParam("folder") final Folder folder, @BindingParam("filterItem") FilterItem filterItem) {
_folder = folder;
_filterItem = filterItem;
//BindUtils.postNotifyChange(null, null, this, "open");
}
public Folder getFolder() {
return _folder;
}
public FilterItem getFilterItem() {
return _filterItem;
}
}
FilterItem.javajavaimport java.util.*;
import org.zkoss.zk.ui.*;
import org.zkoss.zk.ui.event.*;
import org.zkoss.zk.ui.util.*;
import org.zkoss.zk.ui.ext.*;
import org.zkoss.zk.au.*;
import org.zkoss.zk.au.out.*;
import org.zkoss.zul.*;
public class FilterItem {
private static int _count = 0;
private boolean _open;
private List<Item> _items;
public FilterItem(boolean open) {
_open = open;
_count++;
}
public boolean isOpen() {
return _open;
}
public void setOpen(boolean open) {
_open = open;
}
public int getCount() {
return _count;
}
public String getLabel() {
return (_open ? "Open" : "Closed") + " Filter " + _count;
}
public List<Item> getItems() {
if (_items == null) {
_items = new ArrayList();
_items.add(new Item("Item 1", 1, 1));
_items.add(new Item("Item 2", 2, 2));
_items.add(new Item("Item 3", 3, 3));
}
return _items;
}
}
Folder.javajavaimport org.zkoss.zk.ui.*;
import org.zkoss.zk.ui.event.*;
import java.util.*;
import org.zkoss.zk.ui.util.*;
import org.zkoss.zk.ui.ext.*;
import org.zkoss.zk.au.*;
import org.zkoss.zk.au.out.*;
import org.zkoss.zul.*;
public class Folder {
private ListModelList<FilterItem> _filters;
public ListModelList<FilterItem> getFilters() {
if (_filters == null) {
initFilters();
}
return _filters;
}
private void initFilters() {
final List _filters = new ArrayList<>();
_filters.add(new FilterItem(true));
_filters.add(new FilterItem(true));
_filters.add(new FilterItem(true));
_filters.add(new FilterItem(false));
_filters.add(new FilterItem(false));
}
}