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 AMlinkIFTTT
994okspry134.68.31.2272q0rn3uNov 2, 2012 1:36:51 PMlinkresources
index.zulzul<zk xmlns:w="client">
<script>
function show(thingid) {
var zkwidget = zk.Widget.$('$'+ thingid); //zk
zkwidget.setVisible(true);
}
function hide(thingid) {
var zkwidget = zk.Widget.$('$'+ thingid); //zk
zkwidget.setVisible(false);
}
</script>
<style>
.z-tab-accordion .z-tab-accordion-header, .z-tab-accordion .z-tab-accordion-tl,
.z-tab-accordion .z-tab-accordion-tr, .z-tab-accordion .z-tab-accordion-hl,
.z-tab-accordion .z-tab-accordion-hr, .z-tab-accordion .z-tab-accordion-hm,
.z-tab-accordion .z-tab-accordion-text, .z-tab-accordion .z-tab-accordion-close {
background:none;
border-bottom:none;
color:#7A8C96;
font-family: times new roman;
font-size:1.1em;
text-shadow:-1px 1px 1px #A8B8C2;
}
.z-tabpanels .z-tabpanel, .z-tabpanels .z-tabpanel-cnt {
background-image:none;
}
.z-checkbox .z-checkbox-cnt {
font-size:1.1em;
padding:5px;
}
.next.z-button .z-button-tl, .next.z-button .z-button-tr,
.next.z-button .z-button-bl, .next.z-button .z-button-br,
.next.z-button .z-button-tm, .next.z-button .z-button-bm,
.next.z-button .z-button-cl, .next.z-button .z-button-cr {
background-image:none;
}
.next.z-button .z-button-cm {
background-image:none;
padding:13px;
padding-right:600px;
border:none;
font-size:2em;
color:#cfc19a;
text-shadow:-1px 1px 1px #e7dec6, -1px -.5px 2px #877032;
}
.next:hover.z-button .z-button-cm {
background-image:none;
background-color:#f4f4f4;
padding:13px;
padding-right:600px;
outline:1px solid #bbb;
font-size:2em;
color:#877032;
text-shadow:-1px 1px 1px #e7dec6, -1px -.5px 2px #877032;
}
.orderableButton.z-button .z-button-tl, .orderableButton.z-button .z-button-tr,
.orderableButton.z-button .z-button-bl, .orderableButton.z-button .z-button-br,
.orderableButton.z-button .z-button-tm, .orderableButton.z-button .z-button-bm,
.orderableButton.z-button .z-button-cl, .orderableButton.z-button .z-button-cr {
background-image:none;
}
.orderableButton.z-button .z-button-cm {
background-image:none;
padding:13px;
border:none;
font-size:1.5em;
color:#6e8490;
}
.save.z-button .z-button-tl, .save.z-button .z-button-tr,
.save.z-button .z-button-bl, .save.z-button .z-button-br,
.save.z-button .z-button-tm, .save.z-button .z-button-bm,
.save.z-button .z-button-cl, .save.z-button .z-button-cr {
background-image:none;
}
.save.z-button .z-button-cm {
font-size:1.5em;
width:100%;
height:40px;
color:#bbb;
border-radius:5px;
background: -webkit-gradient(linear, 0% 0%, 0% 84%, from(#eee), to(#ccc));
}
.cancel.z-button .z-button-tl, .cancel.z-button .z-button-tr,
.cancel.z-button .z-button-bl, .cancel.z-button .z-button-br,
.cancel.z-button .z-button-tm, .cancel.z-button .z-button-bm,
.cancel.z-button .z-button-cl, .cancel.z-button .z-button-cr {
background-image:none;
}
.cancel.z-button .z-button-cm {
font-size:1.5em;
width:100%;
height:40px;
color:#eee;
border-radius:5px;
background: -webkit-gradient(linear, 0% 0%, 0% 84%, from(#FF7373), to(#BF3030));
}
.channelLink {
font-size:1.2em;
text-decoration:none;
color:#7a8c96;
padding-right:10px;
padding-left:8px;
}
.channelLink:hover {
font-size:1.2em;
text-decoration:underline;
color:#7a8c96;
padding-right:10px;
padding-left:8px;
}
.channelLinkSelected {
font-size:1.2em;
text-decoration:underline;
color:#bbb;
padding-right:10px;
padding-left:8px;
}
.channelTab {
border-bottom:1px solid #bbb;
background-color:transparent;
height:24px;
width:145px;
margin-left:4px;
padding-top:4px;
}
.channelTab:hover {
border-bottom:1px solid #bbb;
background-color:#eee;
height:24px;
width:145px;
margin-left:4px;
padding-top:4px;
}
.channelTabSelected {
border-bottom:1px solid #bbb;
background-color:#eee;
height:24px;
width:145px;
margin-left:4px;
padding-top:4px;
position:relative;
z-index:100;
}
.options {
background-color:#fff;
padding:10px;
width:600px;
height:200px;
}
</style>
<div style="border:1px solid #bbb">
<hlayout>
<tabbox id="tb" hflex="1" mold="accordion">
<tabs id="tabs">
<!--<tab id="tab1" label="For..." />//-->
<tab id="tab2" label="If..." disabled="false"/>
<tab id="tab3" label="...then..." disabled="true"/>
</tabs>
<tabpanels>
<!--Hidden, for now
<tabpanel sclass="all">
<div style="margin-left:-6px;
margin-right:-7px;
margin-bottom:-5px;
padding-left:10px;
padding-bottom:10px;
padding-right:10px;
box-shadow:0px 3px 6px #bbb;">
<hlayout style="margin-left:26px; padding-left:5px;">
<vlayout>
<label value="Choose a trigger..." style="font-family:trebuchet MS; font-size:1.1em; font-style:italic; color:#999;"/>
<vlayout id="">
<hlayout>
<div sclass="channelTab" id="">
<a label="Patient" sclass="channelLink" id=""
w:onClick="show('patientOptions'), this.$f('patientTab').setSclass('channelTabSelected')"/>
</div>
</hlayout>
<hlayout>
<div sclass="channelTab">
<a label="User" sclass="channelLink" id=""/>
</div>
</hlayout>
</vlayout>
</vlayout>
<div sclass="options" style="margin-top:20px;">
<vlayout>
<div id="patientOptions" visible="false">
<button label="Lisinopril" id="" sclass="orderableButton"
image="https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcQ4CUL3XtDdNSLY9A18nxrzcLj8Fr9Rl8-u6qo-1ppwo5Bl5iiTYg"
hoverImage="https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcQFTetwYtnMgWit35GZOX3xTsBHOqRI2uxw8qxXp0YVuQloBTfy"
dir="reverse" style="margin-left:-10px; margin-top:-19px;"
w:onClick="show('wonderbar'), hide('lisinoprilOptions')"/>
<button label="is ordered" id="" sclass="orderableButton" visible="false"
image="https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcQ4CUL3XtDdNSLY9A18nxrzcLj8Fr9Rl8-u6qo-1ppwo5Bl5iiTYg"
hoverImage="https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcQFTetwYtnMgWit35GZOX3xTsBHOqRI2uxw8qxXp0YVuQloBTfy"
dir="reverse" style="margin-left:-10px; margin-top:-19px;"
w:onClick="show('isOrdered'), show('isDiscontinued'), show('chooseLabel'), hide('isOrderedChosen')"/>
<hlayout style="margin-left:15px; margin-top:-8px;">
<label id="" value="Choose..." style="font-family:trebuchet MS; font-size:1.1em; font-style:italic; padding-right:10px; color:#999;"/>
<vlayout style="margin-top:2px;">
<a id="" label="is ordered" sclass="channelLink" visible="true"
onClick="isDiscontinued.visible=false;
isOrdered.visible=false; isOrderedChosen.visible=true; chooseLabel.visible=false;
tab3.disabled=false; next2.disabled=false"/>
<a id="" label="is discontinued" sclass="channelLink" visible="true"/>
</vlayout>
</hlayout>
</div>
</vlayout>
</div>
</hlayout>
<button class="next" id="next1" onClick='tab2.selected=true; tab1.label="For users whose patients have age >= 60,"' label="Next" disabled="true" style="margin-top:5px; margin-left:-4px;"/>
</div>
</tabpanel>
//-->
<tabpanel sclass="all">
<div style="margin-left:-6px;
margin-right:-7px;
margin-bottom:-5px;
padding-left:10px;
padding-bottom:10px;
padding-right:10px;
box-shadow:0px 3px 6px #bbb;">
<hlayout style="margin-left:26px; padding-left:5px; overflow-y:auto; overflow-x:hidden;">
<vlayout>
<label value="Choose a trigger..." style="font-family:trebuchet MS; font-size:1.1em; font-style:italic; color:#999;"/>
<vlayout id="triggerTypes">
<hlayout>
<div sclass="channelTab" id="patientTab">
<a label="Patient" sclass="channelLink" id="patientLink"
w:onClick="show('patientOptions'), this.$f('patientTab').setSclass('channelTabSelected'),
this.$f('orderTab').setSclass('channelTab')"/>
<a label="edit" visible="false" id="patientEditLink" style="font-size:.7em; color:black"
onClick='tab2.label="If..."' w:onClick="show('patientOptions'), hide('patientEditLink')"/>
</div>
</hlayout>
<hlayout>
<div sclass="channelTab">
<a label="User" sclass="channelLink" id=""/>
</div>
</hlayout>
<hlayout>
<div sclass="channelTab" id="orderTab">
<a label="Order" sclass="channelLink" id="orderLink"
w:onClick="show('wonderbar'), this.$f('orderTab').setSclass('channelTabSelected'),
this.$f('patientTab').setSclass('channelTab')"/>
<a label="edit" visible="false" id="orderEditLink" style="font-size:.7em; color:black"
onClick='tab2.label="If..."' w:onClick="show('lisinoprilOptions'), hide('orderEditLink')"/>
</div>
</hlayout>
<hlayout>
<div sclass="channelTab">
<a label="Chart" sclass="channelLink" id="chartLink"/>
</div>
</hlayout>
<hlayout>
<div sclass="channelTab">
<a label="Alert" sclass="channelLink" id="alertLink"/>
</div>
</hlayout>
<hlayout>
<div sclass="channelTab">
<a label="Allergy" sclass="channelLink" id="allergyLink"/>
</div>
</hlayout>
<hlayout>
<div sclass="channelTab">
<a label="Diagnosis" sclass="channelLink" id="diagnosisLink"/>
</div>
</hlayout>
</vlayout>
</vlayout>
<div sclass="options" style="margin-top:5px;">
<vlayout>
<!--wonderbar//-->
<hlayout id="wonderbar" visible="false">
<combobox value="All" mold="rounded" width="100px"/>
<combobox value=" Pick from the list or keep typing..." width="350px" mold="rounded"
style="margin-left:-7px;" w:onChange="show('lisinoprilOptions'), hide('wonderbar')">
<comboitem label=" Lisinopril"/>
<comboitem label=" Lisinopril 5mg"/>
</combobox>
<div style="width:10px; height:22px; margin-left:-356px; margin-top:0px;
background-color:#fbfbfb; border-top:1px solid #bbb; border-bottom:1px solid #bbb;">
<div style="width:5px; height:22px; border-right:1px solid #bbb; box-shadow:1px 0 2px #bbb;"></div>
</div>
</hlayout>
<!--Lisinopril Options//-->
<div id="lisinoprilOptions" visible="false">
<button label="Lisinopril" id="lisinoprilBtn" sclass="orderableButton"
image="https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcQ4CUL3XtDdNSLY9A18nxrzcLj8Fr9Rl8-u6qo-1ppwo5Bl5iiTYg"
hoverImage="https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcQFTetwYtnMgWit35GZOX3xTsBHOqRI2uxw8qxXp0YVuQloBTfy"
dir="reverse" style="margin-left:-10px; margin-top:-19px;"
w:onClick="show('wonderbar'), hide('lisinoprilOptions')"/>
<button label="is ordered" id="isOrderedChosen" sclass="orderableButton" visible="false"
image="https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcQ4CUL3XtDdNSLY9A18nxrzcLj8Fr9Rl8-u6qo-1ppwo5Bl5iiTYg"
hoverImage="https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcQFTetwYtnMgWit35GZOX3xTsBHOqRI2uxw8qxXp0YVuQloBTfy"
dir="reverse" style="margin-left:-10px; margin-top:-19px;"
w:onClick="show('isOrdered'), show('isDiscontinued'), show('chooseLabel'), hide('isOrderedChosen')"/>
<hlayout style="margin-left:15px; margin-top:-8px;">
<label id="chooseLabel" value="Choose..." style="font-family:trebuchet MS; font-size:1.1em; font-style:italic; padding-right:10px; color:#999;"/>
<vlayout style="margin-top:2px;">
<a id="isOrdered" label="is ordered" sclass="channelLink" visible="true"
onClick="isDiscontinued.visible=false;
isOrdered.visible=false; isOrderedChosen.visible=true; chooseLabel.visible=false;
tab3.disabled=false; next2.disabled=false"/>
<a id="isDiscontinued" label="is discontinued" sclass="channelLink" visible="true"/>
</vlayout>
</hlayout>
<hlayout style="margin-top:30px;">
<image src="https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQFneTPHxkUiMGEBV4rnYZVYEHUyQMciz-97YhV_tj_H3vmxIvUhw"/>
<label value="Add to favorite parameters" style="font-size:.9em; color:#999;"/>
</hlayout>
<button label="Add another trigger channel" style="font-size:.9em; margin-top:7px;"
w:onClick="show('orderEditLink'), hide('patientOptions'), this.$f('orderTab').setSclass('channelTab')"/>
</div>
<!--Patient Options//-->
<vlayout id="patientOptions" visible="false" style="margin-left:5px; padding-top:2px; padding-left:5px;">
<hlayout id="patientWonderbar" style="border-bottom:1px solid #bbb; padding-bottom:6px;">
<label value="Other choices" style="font-size:1em; color:#999"/>
<combobox value="Pick from the list or keep typing..." width="270px" mold="rounded"
w:onChange="show('creatinineLevel')" onSelect="creatinineCheck.checked=true">
<comboitem label="Creatinine level"/>
<comboitem label="Weight"/>
</combobox>
</hlayout>
<!--Other options selected//-->
<hlayout id="creatinineLevel" style="padding-left:10px; padding-top:6px;" visible="false">
<checkbox label="Ceratinine level" id="creatinineCheck"
onCheck="tab3.disabled=false; next2.disabled=false"/>
<listbox mold="select">
<listitem label=">" selected="true"/>
<listitem label="<"/>
<listitem label=">="/>
<listitem label="<="/>
<listitem label="="/>
</listbox>
<textbox width="50px" onClick="creatinineCheck.checked=true; tab3.disabled=false; next2.disabled=false"/>
</hlayout>
<!--Default options-->
<hlayout style="padding-left:10px; padding-top:6px;">
<checkbox label="Age" id="ageCheck"
onCheck="tab3.disabled=false; next2.disabled=false"/>
<listbox mold="select" onSelect="ageCheck.checked=true;">
<listitem label=">"/>
<listitem label="<"/>
<listitem label=">="/>
<listitem label="<="/>
<listitem label="="/>
</listbox>
<textbox width="50px" onClick="ageCheck.checked=true; tab3.disabled=false; next2.disabled=false"/>
</hlayout>
<hlayout style="padding-left:10px; padding-top:6px;">
<checkbox label="Problem" id="problemCheck"
onCheck="tab3.disabled=false; next2.disabled=false"/>
<combobox mold="rounded" onSelect="problemCheck.checked=true;">
<comboitem label="Depression"/>
<comboitem label="Diabetes mellitus"/>
<comboitem label="Gout"/>
</combobox>
</hlayout>
<hlayout style="padding-left:10px; padding-top:6px;">
<checkbox label="Race" id="raceCheck"
onClick="tab3.disabled=false; next2.disabled=false"/>
<listbox mold="select" onSelect="raceCheck.checked=true; tab3.disabled=false; next2.disabled=false">
<listitem label="African American"/>
<listitem label="Asian"/>
<listitem label="Hispanic"/>
<listitem label="White (non-Hispanic)"/>
</listbox>
</hlayout>
<hlayout style="margin-top:8px;">
<image src="https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQFneTPHxkUiMGEBV4rnYZVYEHUyQMciz-97YhV_tj_H3vmxIvUhw"/>
<label value="Add to favorite parameters" style="font-size:.9em; color:#999;"/>
</hlayout>
<button label="Add another trigger channel" style="font-size:.9em; margin-top:4px;"
onClick='tab2.label="If PATIENT age > 60 and problem is Diabetes Mellitus,"'
w:onClick="show('patientEditLink'), hide('patientOptions')"/>
</vlayout>
</vlayout>
</div>
</hlayout>
<button class="next" id="next2" onClick='tab3.selected=true; tab2.label="If PATIENT age > 60 and problem is Diabetes Mellitus
AND ORDER Lisinopril is ordered,"'
label="Next" disabled="true" style="margin-left:-4px;"/>
</div>
</tabpanel>
<tabpanel sclass="last">
<div style="margin-left:-6px;
margin-right:-5px;
margin-bottom:-5px;
padding-left:10px;
padding-bottom:10px;
padding-right:10px;
box-shadow:0px 3px 6px #bbb;">
This is panel 2
The second panel
</div>
</tabpanel>
</tabpanels>
</tabbox>
<vlayout style="margin-left:5px; margin-right:5px;">
<div style="border-bottom:1px solid #bbb; width:240px;">
<label value="Favorite Parameters" style="font-size:1em; font-family:courier;"/>
</div>
<hlayout>
<image src="https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcSOSW_v9__BjuJy8h_sjLLyI8O8Otgc0yENWlLjRIZAH1-Cj-nEJA"/>
<a label="Cardiologists" style="color:black; font-size:.9em;"/>
</hlayout>
</vlayout>
</hlayout>
</div>
<button label="Save" sclass="save"/>
<button label="Cancel" sclass="cancel"/>
</zk>
TestComposer.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.*;
public class TestComposer extends GenericForwardComposer{
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
}
public void onClick$btn(Event e) throws InterruptedException{
Messagebox.show("Hi btn");
}
}