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 :

constraint binding textbox

3guest172.68.151.16220peldaDec 5, 2025 5:08:19 PMlink

Another new ZK fiddle

2guest172.68.151.16320peldaDec 5, 2025 5:07:51 PMlink

Another new ZK fiddle

1guest172.68.151.16220peldaDec 5, 2025 5:07:32 PMlink

Another new ZK fiddle

1peggypeng172.71.154.99364f4neDec 5, 2025 9:24:31 AMlink

tooltip example

2guest104.22.23.13rc1ntoDec 4, 2025 2:23:45 PMlink

Another new ZK fiddle

1guest172.69.134.2277t7602Dec 4, 2025 1:40:46 PMlink

Another new ZK fiddle

1peggypeng104.22.17.1802df6e3oDec 4, 2025 8:41:29 AMlink

onClose

1peggypeng172.68.87.248j8kd8aDec 3, 2025 4:10:26 AMlink

Another new ZK fiddle

1peggypeng172.69.134.2271rm7f4eNov 26, 2025 3:31:24 AMlink

ZK-5912-Suggestion

2rebeccalai104.22.20.1442qrmiiuNov 26, 2025 2:07:15 AMlink

A master list using a modal dialog to edit details.

68guest64.233.172.23328jhc26Feb 12, 2016 5:58:17 PMlink

resources

index.zulzul<zk> <window id="winSchools" title="Schools" border="normal" height="100%" width="100%" apply="pkg$.SchoolsListController"> <toolbar> <toolbarbutton id="tbtnEdit" label="Edit" image="/images/tb-edit.png" /> <toolbarbutton id="tbtnRemove" label="Remove" image="/images/tb-delete.png" /> </toolbar> <listbox id="lbSchools" model="@{ controller.schools }" selectedItem="@{ controller.selectedSchool }" vflex="true"> <listhead sizable="true"> <listheader label="Code" width="50px" sort="auto"/> <listheader label="Name" width="150px" sort="auto"/> <listheader label="Address" width="200px" sort="auto"/> </listhead> <listitem self="@{each='school'}" value="@{school}" > <listcell label="@{school.code}" /> <listcell label="@{school.name}" /> <listcell label="@{school.address}" /> </listitem> </listbox> </window> </zk> SchoolsListController.javajava import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.SuspendNotAllowedException; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zkplus.databind.AnnotateDataBinder; import org.zkoss.zul.Messagebox; import org.zkoss.zul.api.Listbox; import org.zkoss.zul.api.Window; public class SchoolsListController extends GenericForwardComposer { private static final long serialVersionUID = 1L; private AnnotateDataBinder binder; private Window winSchools; private Listbox lbSchools; private List<School> schools; private School selectedSchool; @Override public void doAfterCompose(Component comp) throws Exception { try { super.doAfterCompose(comp); } catch (Exception e) { e.printStackTrace(); } /* * create the data binder and bind this composer as the base model bean */ binder = new AnnotateDataBinder(comp); binder.bindBean("controller", this); /* * populate data models */ createModels(); } public void onCreate(Event event) { /* * populate ui with data */ binder.loadAll(); } /* * Create some mock data models */ private void createModels() { schools = new ArrayList<School>(); schools.add(new School("1", "1st school", "address-1")); schools.add(new School("2", "2nd school", "address-2")); schools.add(new School("3", "3rd school", "address-3")); schools.add(new School("4", "4th school", "address-4")); schools.add(new School("5", "5th school", "address-5")); schools.add(new School("6", "6th school", "address-6")); schools.add(new School("7", "7th school", "address-7")); schools.add(new School("8", "8th school", "address-8")); schools.add(new School("9", "9th school", "address-9")); } /** * Event handler method triggered when the "edit" toolbar button is pressed */ public void onClick$tbtnEdit() { editSchool(); } /** * Event handler method triggered wheneber the user selects a listitem using CR or Double Click */ public void onOK$lbSchools() { editSchool(); } private void editSchool() { if (selectedSchool == null) { try { Messagebox.show("You have to select a school from the list first.", "Error", Messagebox.OK, Messagebox.ERROR); } catch (InterruptedException e) { e.printStackTrace(); } return; } Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("SELECTED_SCHOOL", selectedSchool); parameters.put("PARENT_WINDOW", winSchools); Window editDialog = (Window) Executions.createComponents("SchoolEditor.zul", winSchools, parameters); try { editDialog.doModal(); } catch (SuspendNotAllowedException e) { e.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * This method is actualy an event handler triggered only from the edit dialog * and it is responsible to reflect the data changes made to the list. */ public void onSchoolSaved() { int index = lbSchools.getSelectedIndex(); if (index == -1) return; binder.loadComponent( lbSchools.getItemAtIndexApi(index) ); } /** * Event handler method triggered when the "remove" toolbar button is pressed */ public void onClick$tbtnRemove() { if (selectedSchool == null) { try { Messagebox.show("You have to select a school from the list first.", "Error", Messagebox.OK, Messagebox.ERROR); } catch (InterruptedException e) { e.printStackTrace(); } return; } try { /* * This event listener is needed to catch the response given by the user in the confirmation dialog */ EventListener eventListener = new EventListener() { @Override public void onEvent(Event event) throws Exception { switch (((Integer) event.getData()).intValue()) { case Messagebox.OK: deleteSchool(); break; } } }; Messagebox.show("Are you sure you want to delete " + selectedSchool.getName() + "?", "Warning", Messagebox.OK | Messagebox.CANCEL, Messagebox.QUESTION, eventListener); } catch (InterruptedException e) { e.printStackTrace(); } } /** * Delete the selected school */ private void deleteSchool() { schools.remove(selectedSchool); selectedSchool = null; binder.loadComponent(lbSchools); } public AnnotateDataBinder getBinder() { return binder; } public void setBinder(AnnotateDataBinder binder) { this.binder = binder; } public List<School> getSchools() { return schools; } public void setSchools(List<School> schools) { this.schools = schools; } public School getSelectedSchool() { return selectedSchool; } public void setSelectedSchool(School selectedSchool) { this.selectedSchool = selectedSchool; } } School.javajavaimport java.io.Serializable; public class School implements Serializable { private static final long serialVersionUID = 1L; private String code; private String name; private String address; public School(String code, String name, String address) { super(); this.code = code; this.name = name; this.address = address; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((code == null) ? 0 : code.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; School other = (School) obj; if (code == null) { if (other.code != null) return false; } else if (!code.equals(other.code)) return false; return true; } } SchoolEditor.zulzul<?page title="Schools" contentType="text/html;charset=UTF-8"?> <zk> <window id="winEditor" title="School Editor" border="normal" height="350px" width="400px" closable="true" apply="pkg$.SchoolEditorController"> <vlayout> <toolbar> <toolbarbutton id="tbtnSave" label="Save" /> <toolbarbutton id="tbtnExit" label="Exit" /> </toolbar> <grid id="gridSchool"> <columns> <column width="100px"/> <column/> </columns> <rows> <row> <label value="Code" /> <textbox value="@{ controller.selectedSchool.code, access='both', save-when='none' }"/> </row> <row> <label value="Name" /> <textbox value="@{ controller.selectedSchool.name, access='both', save-when='none' }"/> </row> <row> <label value="Address" /> <textbox value="@{ controller.selectedSchool.address, access='both', save-when='none' }"/> </row> </rows> </grid> </vlayout> </window> </zk>SchoolEditorController.javajava import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zkplus.databind.AnnotateDataBinder; import org.zkoss.zul.api.Window; public class SchoolEditorController extends GenericForwardComposer { private static final long serialVersionUID = 1L; private AnnotateDataBinder binder; private School selectedSchool; private Window parentWindow; private Window winEditor; @Override public void doAfterCompose(Component comp) throws Exception { try { super.doAfterCompose(comp); } catch (Exception e) { e.printStackTrace(); } /* * create the data binder and bind this composer as the base model bean */ binder = new AnnotateDataBinder(comp); binder.bindBean("controller", this); /* * retrieve parameters passed here by the caller */ selectedSchool = (School)arg.get("SELECTED_SCHOOL"); parentWindow = (Window)arg.get("PARENT_WINDOW"); } public void onCreate(Event event) { /* * populate ui with data */ binder.loadAll(); } /** * Event handler for closing this dialog using the "exit" toolbar button */ public void onClick$tbtnExit() { winEditor.detach(); } /** * Event handler for saving the model values */ public void onClick$tbtnSave() { binder.saveAll(); winEditor.detach(); Events.sendEvent(new Event("onSchoolSaved", parentWindow)); } public AnnotateDataBinder getBinder() { return binder; } public void setBinder(AnnotateDataBinder binder) { this.binder = binder; } public School getSelectedSchool() { return selectedSchool; } public void setSelectedSchool(School selectedSchool) { this.selectedSchool = selectedSchool; } }