Suggested case list:

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

identify firefox or not in server side

1TonyQ198.203.175.1751nv2qreDec 10, 2011 4:25:04 AMlink

ZK addThis integration

1TonyQ198.203.175.1751apl96jNov 5, 2011 4:12:50 AMlink

Latest 10 Fiddles :

ZK Shadow in MVC

1rudyhuang220.134.32.2429bcgs8Sep 25, 2018 10:30:29 AMlink

MVVM confirm case

5guest129.221.62.1053etmmp1Sep 25, 2018 9:58:55 AMlink

MVVM confirm case

4guest129.221.62.1053etmmp1Sep 25, 2018 9:58:16 AMlink

autodisable for button

36guest114.124.229.206obi1o1Sep 25, 2018 9:53:15 AMlink

MVVM confirm case

3guest129.221.62.1053etmmp1Sep 25, 2018 9:33:25 AMlink

MVVM confirm case

2guest129.221.62.1053etmmp1Sep 25, 2018 9:32:35 AMlink

Simple MVVM sample

211guest129.221.62.1053kvld74Sep 25, 2018 9:29:59 AMlink

Simple MVVM sample

210guest129.221.62.1053kvld74Sep 25, 2018 9:28:29 AMlink

Simple MVVM sample

209guest129.221.62.1053kvld74Sep 25, 2018 9:24:09 AMlink

Another new ZK fiddle

1guest151.96.3.242sd4917Sep 25, 2018 9:13:18 AMlink

custom form validator

16guest177.209.11.442fnhdnpAug 21, 2018 8:20:18 PMlink

resources

index.zulzul<zk> <window border="normal" title="hello" viewModel="@id('vm') @init('pkg$.TestVM')" validationMessages="@id('vmsgs')"> <div form="@id('fx') @load(vm.selectedPerson) @save(vm.selectedPerson, before='save') @validator('pkg$.CustomValidator')"> <vlayout spacing="10px"> <label value="Name" /> <textbox value="@save(fx.name)" /> <label value="@load(vmsgs['p_name'])" /> <label value="Gender" /> <textbox value="@save(fx.gender)" /> <label value="@load(vmsgs['p_gender'])" /> <label value="Parent" /> <combobox model="@load(vm.people)" selectedItem="@save(fx.parent)"> <template name="model"> <comboitem label="@load(each.name)" value="@load(each)" /> </template> </combobox> <label value="@load(vmsgs['p_parent'])" /> </vlayout> </div> <button label="Save" onClick="@command('save')" iconSclass="z-icon-check" /> </window> </zk> TestVM.javajavaimport java.util.List; import java.util.ArrayList; 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.Command; import org.zkoss.bind.annotation.Init; import org.zkoss.bind.annotation.NotifyChange; public class TestVM { private Person selectedPerson = new Person(); @Command public void save() { Clients.alert(selectedPerson.getParent().getName(), "Info", "INFO"); } public Person getSelectedPerson() { return selectedPerson; } public void setSelectedPerson(Person person) { this.selectedPerson = person; } public List<Person> getPeople() { List<Person> people = new ArrayList<Person>(); people.add(new Person("Bruce Wayne", "Male", null)); people.add(new Person("Harvey Dent", "Male", null)); people.add(new Person("Selina Kyle", "Female", null)); people.add(new Person("Vicki Vale", "Female", null)); people.add(new Person("Pamela Isley", "Female", null)); people.add(new Person("Dick Grayson", "Male", null)); return people; } } CustomValidator.javajavaimport 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.ValidationContext; import org.zkoss.bind.validator.AbstractValidator; public class CustomValidator extends AbstractValidator { public void validate(ValidationContext ctx) { Person parent = (Person) ctx.getProperties("parent")[0].getValue(); String name = (String) ctx.getProperties("name")[0].getValue(); String gender = (String) ctx.getProperties("gender")[0].getValue(); if (parent == null) { this.addInvalidMessage(ctx, "p_parent", "Parent must not be blank."); } if (name == null || name.isEmpty()) { this.addInvalidMessage(ctx, "p_name", "Name must not be blank."); } if (gender == null || gender.isEmpty()) { this.addInvalidMessage(ctx, "p_gender", "Gender must not be blank."); } } } Person.javajava public class Person { private String name; private String gender; private Person parent; public Person() {} public Person(String name, String gender, Person parent) { this.name = name; this.gender = gender; this.parent = parent; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public Person getParent() { return parent; } public void setParent(Person parent) { this.parent = parent; } }