Processing...

Suggested case list:

Using timer to refresh a grid

383guest172.69.33.12125nk0uiMay 7, 2020 7:23:47 AMlink

user model to move item to another listbox

120guest162.158.193.148d0n3krApr 2, 2020 5:28:28 AMlink

Disabled list item row passed to VM-1981

296fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:44 PMlink

Disabled list item row passed to VM-1981

295fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:16 PMlink

Disabled list item row passed to VM-1981

294fatih123160.83.36.13225nk0uiFeb 13, 2018 3:30:44 PMlink

grid sample with ListModel/RowRenderer

816guest80.82.2.1312vah9ajFeb 21, 2017 11:42:21 AMlink

grid sample with ListModel/RowRenderer

809guest175.98.113.1622vah9ajJan 26, 2017 9:19:33 AMlink

grid sample with ListModel/RowRenderer

196guest79.185.142.402vah9ajApr 26, 2014 10:53:57 PMlink

grid sample with ListModel/RowRenderer

195guest79.185.142.402vah9ajApr 26, 2014 10:53:54 PMlink

grid sample with ListModel/RowRenderer

194guest79.185.142.402vah9ajApr 26, 2014 10:53:51 PMlink

grid sample with ListModel/RowRenderer

193guest79.185.142.402vah9ajApr 26, 2014 10:53:48 PMlink

grid sample with ListModel/RowRenderer

192guest79.185.142.402vah9ajApr 26, 2014 10:53:44 PMlink

grid sample with ListModel/RowRenderer

191guest79.185.142.402vah9ajApr 26, 2014 10:53:40 PMlink

Hierarchy table without using ZK PE/EE

1aaknai151.28.135.2131s871daJul 29, 2013 11:02:46 PMlink

grid sample with ListModel/RowRenderer

128aaknai151.28.135.2132vah9ajJul 29, 2013 7:20:00 PMlink

user model to move item to another listbox

1TonyQ114.25.109.94d0n3krApr 21, 2012 10:43:27 AMlink

Using timer to refresh a grid

1TonyQ220.133.44.3725nk0uiFeb 17, 2012 3:17:34 AMlink

Fire a event from child iframe

1TonyQ220.133.44.372eupjotFeb 3, 2012 5:04:52 AMlink

Textbox input restriction sample

1TonyQ72.21.245.2431b3nlr0Dec 20, 2011 10:09:10 AMlink

Test web core taglib in ZUL

1TonyQ198.203.175.175ofqkemDec 17, 2011 3:36:08 AMlink

Latest 10 Fiddles :

Another new ZK fiddle

7guest172.71.81.443gm6qr1May 8, 2024 4:07:58 PMlink

Another new ZK fiddle

6guest172.71.81.433gm6qr1May 8, 2024 4:06:19 PMlink

Another new ZK fiddle

5guest172.71.81.433gm6qr1May 8, 2024 4:05:04 PMlink

Another new ZK fiddle

4guest172.71.81.443gm6qr1May 8, 2024 4:04:19 PMlink

Another new ZK fiddle

3guest172.71.81.443gm6qr1May 8, 2024 4:03:46 PMlink

Another new ZK fiddle

2guest172.71.81.433gm6qr1May 8, 2024 3:55:04 PMlink

Another new ZK fiddle

1guest172.71.81.433gm6qr1May 8, 2024 3:54:06 PMlink

Use zAu.send to send data to server from client

2guest162.158.119.7343vscpMay 8, 2024 12:54:11 PMlink

Use zAu.send to send data to server from client

1guest162.158.119.7443vscpMay 8, 2024 12:54:01 PMlink

Use zAu.send to send data to server from client

81guest162.158.119.743u18u31May 8, 2024 12:53:38 PMlink

Listbox selectedItems form binding

5MDuchemin172.70.98.83nptg2sAug 4, 2021 10:40:41 AMlink

resources

index.zulzul<zk> No form binding <div viewModel="@id('vm')@init('pkg$.SelectedItemsViewModel')"> With forEach <listbox multiple="true" selectedItems="@bind(vm.selectedItems)"> <forEach items="@load(vm.items)" var="item"> <listitem value="${item}"> <listcell label="${item.label}" /> </listitem> </forEach> </listbox> With model <listbox multiple="true" model="@load(vm.items)" selectedItems="@bind(vm.selectedItems)"> <template name="model" var="item"> <listitem value="${item}"> <listcell label="${item.label}"/> </listitem> </template> </listbox> Selected Entries <button label="select first item" onClick="@command('setFirstItemSelection')"/> <separator bar="true" orient="horizontal" /> <listbox model="@load(vm.selectedItems)"> <template name="model" var="item"> <listitem value="${item}"> <listcell label="${item.label}"/> </listitem> </template> </listbox> </div> <separator bar="true" orient="horizontal" /> form binding <div viewModel="@id('vm2')@init('pkg$.SelectedItemsProxyViewModel')"> <div form="@id('fx') @load(vm2.itemContainer) @save(vm2.itemContainer, before={'save'}) "> with forEach <!-- WORKAROUND: custom converter --> <!--<listbox multiple="true" selectedItems="@bind(vm2.selectedItems) @converter(vm2.proxiedListitemComparator)"> --> <listbox multiple="true" selectedItems="@bind(vm2.selectedItems)"> <forEach items="@load(fx.items)" var="item"> <listitem value="${item}"> <listcell label="${item.label}" /> </listitem> </forEach> </listbox> <!-- WORKAROUND: custom converter --> <!--<listbox multiple="true" model="@load(fx.items)" selectedItems="@bind(vm2.selectedItems) @converter(vm2.proxiedListitemComparator)">--> With model <listbox multiple="true" model="@load(fx.items)" selectedItems="@bind(vm2.selectedItems)"> <template name="model" var="item"> <listitem value="${item}"> <listcell label="${item.label}"/> </listitem> </template> </listbox> </div> <button label="select first item" onClick="@command('setFirstItemSelection')"/> <separator bar="true" orient="horizontal" /> Selected entries <listbox model="@load(vm2.selectedItems)"> <template name="model" var="item"> <listitem value="${item}"> <listcell label="${item.label}"/> </listitem> </template> </listbox> </div> </zk>SelectedItemsViewModel.javajavaimport java.util.LinkedList; import java.util.List; import org.zkoss.bind.BindUtils; import org.zkoss.bind.annotation.Command; import org.zkoss.bind.annotation.Init; public class SelectedItemsViewModel { private List<Item> items; private List<Item> selectedItems; @Init public void init() { items = new LinkedList<Item>(); selectedItems = new LinkedList<Item>(); items.add(new Item("a")); items.add(new Item("b")); items.add(new Item("c")); selectedItems.add(items.get(1)); selectedItems.add(items.get(2)); } public List<Item> getSelectedItems() { return selectedItems; } public void setSelectedItems(List<Item> selectedItems) { this.selectedItems = selectedItems; } public List<Item> getItems() { return items; } @Command public void setFirstItemSelection() { // selectedItems.clear(); selectedItems.add(items.get(0)); BindUtils.postNotifyChange(null, null, this, "selectedItems"); } } SelectedItemsProxyViewModel.javajava import java.util.LinkedList; import java.util.List; import org.zkoss.bind.BindUtils; import org.zkoss.bind.Converter; import org.zkoss.bind.annotation.Command; import org.zkoss.bind.annotation.Init; public class SelectedItemsProxyViewModel { private ItemsContainer itemContainer; private List<Item> selectedItems; private Converter proxiedListitemConverter; @Init public void init() { List<Item >items = new LinkedList<Item>(); selectedItems = new LinkedList<Item>(); items.add(new Item("a")); items.add(new Item("b")); items.add(new Item("c")); selectedItems.add(items.get(1)); selectedItems.add(items.get(2)); itemContainer = new ItemsContainer(items); } public List<Item> getSelectedItems() { return selectedItems; } public void setSelectedItems(List<Item> selectedItems) { this.selectedItems = selectedItems; } public ItemsContainer getItemContainer() { return itemContainer; } @Command public void setFirstItemSelection() { // selectedItems.clear(); selectedItems.add(itemContainer.getItems().get(0)); BindUtils.postNotifyChange(null, null, this, "selectedItems"); } public Converter getProxiedListitemComparator() { if(proxiedListitemConverter == null) { proxiedListitemConverter = new ProxiedListitemConverter(); } return proxiedListitemConverter; } }Item.javajavapublic class Item { private String label; public String getLabel() { return label; } public void setLabel(String label) { this.label = label; } public Item(String label) { this.label = label; } public Item() { } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((label == null) ? 0 : label.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Item other = (Item) obj; if (label == null) { if (other.label != null) return false; } else if (!label.equals(other.label)) return false; return true; } } ProxiedListitemConverter.javajavaimport java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.Set; import org.zkoss.bind.BindContext; import org.zkoss.bind.Converter; import org.zkoss.bind.proxy.FormProxyObject; import org.zkoss.lang.Classes; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.UiException; import org.zkoss.zul.ListModel; import org.zkoss.zul.Listbox; import org.zkoss.zul.Listitem; import org.zkoss.zul.ext.Selectable; public class ProxiedListitemConverter implements Converter, java.io.Serializable { private static final long serialVersionUID = 201108171811L; @SuppressWarnings("unchecked") public Object coerceToUi(Object val, Component comp, BindContext ctx) { Listbox lbx = (Listbox) comp; final ListModel<?> model = lbx.getModel(); if (model != null && !(model instanceof Selectable)) { //model has to implement Selectable if binding to selectedItems throw new UiException("model doesn't implement Selectable"); } final Set<Listitem> items = new LinkedHashSet<Listitem>(); Set<Object> vals = val == null ? null : (Set<Object>) Classes.coerce(LinkedHashSet.class, val); if (vals != null && vals.size() > 0) { if (model != null) { ((Selectable<Object>) model).setSelection(vals); for(int i = 0; i < model.getSize(); i++) { Object modelEntry = model.getElementAt(i); if(modelEntry instanceof FormProxyObject && vals.contains(((FormProxyObject)modelEntry).getOriginObject())) ((Selectable<Object>) model).addToSelection(modelEntry); } } else { //no model case for (final Iterator<?> it = lbx.getItems().iterator(); it.hasNext();) { final Listitem li = (Listitem) it.next(); Object bean = li.getValue(); if(bean instanceof FormProxyObject) { bean = ((FormProxyObject)bean).getOriginObject(); } if (vals.contains(bean)) { items.add(li); }else { for (Object object : vals) { if(object instanceof FormProxyObject && ((FormProxyObject)object).getOriginObject().equals(bean)) { items.add(li); } } } } } } else if (model != null && !((Selectable<Object>) model).isSelectionEmpty()) { //model !=null and no selection ((Selectable<Object>) model).clearSelection(); } return model == null ? items : IGNORED_VALUE; } @SuppressWarnings("unchecked") public Object coerceToBean(Object val, Component comp, BindContext ctx) { Set<Object> vals = new LinkedHashSet<Object>(); if (val != null) { final Listbox lbx = (Listbox) comp; final ListModel<?> model = lbx.getModel(); if (model != null && !(model instanceof Selectable)) { throw new UiException("model doesn't implement Selectable"); } if (model != null) { Set<?> selection = ((Selectable<?>) model).getSelection(); if (selection != null && selection.size() > 0) { for (Object o : selection) { vals.add(o); } } } else { //no model final Set<Listitem> items = (Set<Listitem>) Classes.coerce(HashSet.class, val); for (Listitem item : items) { vals.add(item.getValue()); } } } return vals; } } ItemsContainer.javajavaimport java.util.List; public class ItemsContainer { private List<Item> items; public List<Item> getItems() { return items; } public void setItems(List<Item> items) { this.items = items; } public ItemsContainer(List<Item> items) { this.items = items; } public ItemsContainer() { } }