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 AMlinkfilter a list in MVVM
34guest162.158.166.1072nk3kipOct 13, 2020 9:51:32 AMlinkresources
index.zulzul<zk>
<window border="normal" title="search"
apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('pkg$.ListSearchViewModel')">
<bandbox id="srcJobs1" autodrop="true" width="200px" mold="rounded"
disabled="false" value="Job Name Search" instant="true" onChanging="@command('filterJobs', filterValue=event.value)"/>
<listbox id="jobsGrid" model="@load(vm.jobsListModel) @template('noneditable')" height="450px"
sizedByContent="true" sclass="z-word-wrap" multiple="true"
width="1090px" >
<listhead sizable="false" width="100%">
<listheader label="test">
<bandbox id="srcJobs2" autodrop="true" width="200px" mold="rounded"
disabled="false" value="Job Name Search" instant="true" onChanging="@command('filterJobs', filterValue=event.value)"/>
</listheader>
<listheader label="test">
<bandbox id="srcJobs3" autodrop="true" width="200px" mold="rounded"
disabled="false" value="Job Name Search" instant="true" onChanging="@command('filterJobs', filterValue=event.value)"/>
</listheader>
<listheader label="test">
<bandbox id="srcJobs4" autodrop="true" width="200px" mold="rounded"
disabled="false" value="Job Name Search" instant="true" onChanging="@command('filterJobs', filterValue=event.value)"/>
</listheader>
<listheader label="test">
<bandbox id="srcJobs5" autodrop="true" width="200px" mold="rounded"
disabled="false" value="Job Name Search" instant="true" onChanging="@command('filterJobs', filterValue=event.value)"/>
</listheader>
</listhead>
<template name="noneditable">
<listitem onClick="@command('selectRowToEdit', rowToEdit=each)">
<listcell>
<label value="@init(each.a)"/>
</listcell>
<listcell>
<label value="@init(each.b)"/>
</listcell>
<listcell>
<label value="@init(each.c)"/>
</listcell><listcell>
<label value="@init(each.d)"/>
</listcell>
</listitem>
</template>
</listbox>
</window>
</zk>ListSearchViewModel.javajavaimport java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import org.zkoss.bind.annotation.BindingParam;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.Init;
import org.zkoss.zul.ListModelSet;
import org.zkoss.zul.ListModelList;
public class ListSearchViewModel {
private Set<MyObject> viewedJobsSet;
/* = new HashSet<MyObject>(
Arrays.asList(new MyObject("manager"), new MyObject("teacher"), new MyObject( "police officer"), new MyObject(
"fire fighter"), new MyObject( "governor"), new MyObject( "programmer"), new MyObject(
"designer"), new MyObject( "house keeper"), new MyObject( "physicist"), new MyObject(
"fire fighter1"), new MyObject( "fire1 fighte1r"), new MyObject("fire fight1er"), new MyObject("fire figh1ter"), new MyObject("fire fig1hter"), new MyObject("fire fi1ghter"), new MyObject("fire fighter11"), new MyObject(
"fire fighter2"), new MyObject("fire2 fighte2r"), new MyObject("fire fight2er"), new MyObject("fire figh2ter"), new MyObject("fire fig2hter"), new MyObject("fire fi2ghter"), new MyObject("fire fighter12"), new MyObject(
"fire fighter3"), new MyObject("fire3 fighte4r"), new MyObject("fire fight9er"), new MyObject("fire figh3ter"), new MyObject("fire fig3hter"), new MyObject("fire fi3ghter"), new MyObject("fire fighter13"), new MyObject(
"fire fighter4"), new MyObject("fire4 fighte3r"), new MyObject("fire fight3er"), new MyObject("fire figh4ter"), new MyObject("fire fig4hter"), new MyObject("fire fi4ghter"), new MyObject("fire fighter14"), new MyObject(
"fire fighter5"), new MyObject("fire5 fighte5r"), new MyObject("fire fight4er"), new MyObject("fire figh5ter"), new MyObject("fire fig5hter"), new MyObject("fire fi5ghter"), new MyObject("fire fighter15"), new MyObject(
"fire fighter6"), new MyObject("fire6 fighte6r"), new MyObject("fire fight5er"), new MyObject("fire figh6ter"), new MyObject("fire fig6hter"), new MyObject("fire fi6ghter"), new MyObject("fire fighter16"), new MyObject(
"fire fighter7"), new MyObject("fire7 fighte7r"), new MyObject("fire fight6er"), new MyObject("fire figh7ter"), new MyObject("fire fig7hter"), new MyObject("fire fi7ghter"), new MyObject("fire fighter17"), new MyObject(
"fire fighter8"), new MyObject("fire8 fighte8r"), new MyObject("fire fight7er"), new MyObject("fire figh8ter"), new MyObject("fire fig8hter"), new MyObject("fire fi8ghter"), new MyObject("fire fighter18"), new MyObject(
"fire fighter9"), new MyObject("fire9 fighte9r"), new MyObject("fire fight8er"), new MyObject("fire figh9ter"), new MyObject("fire fig9hter"), new MyObject("fire fi9ghter"), new MyObject("fire fighter19"));
*/
private ListModelList<MyObject> jobsListModel;
@Init
public void init() {
//initialize the model
viewedJobsSet = new HashSet<MyObject>();
viewedJobsSet.add(new MyObject("manager1"));
viewedJobsSet.add(new MyObject("manager2"));
viewedJobsSet.add(new MyObject("manager3"));
viewedJobsSet.add(new MyObject("manager4"));
viewedJobsSet.add(new MyObject("manager5"));
viewedJobsSet.add(new MyObject("manager6"));
viewedJobsSet.add(new MyObject("manager7"));
viewedJobsSet.add(new MyObject("manager8"));
viewedJobsSet.add(new MyObject("manager9"));
viewedJobsSet.add(new MyObject("manager10"));
viewedJobsSet.add(new MyObject("manager11"));
viewedJobsSet.add(new MyObject("manage1r"));
viewedJobsSet.add(new MyObject("manage2r"));
viewedJobsSet.add(new MyObject("manage3r"));
viewedJobsSet.add(new MyObject("manage4r"));
viewedJobsSet.add(new MyObject("manage5r"));
viewedJobsSet.add(new MyObject("manage6r"));
viewedJobsSet.add(new MyObject("manage7r"));
viewedJobsSet.add(new MyObject("manage8r"));
viewedJobsSet.add(new MyObject("manage9r"));
viewedJobsSet.add(new MyObject("manage0r"));
viewedJobsSet.add(new MyObject("manager1"));
viewedJobsSet.add(new MyObject("manager1"));
viewedJobsSet.add(new MyObject("manager1"));
viewedJobsSet.add(new MyObject("manager2"));
viewedJobsSet.add(new MyObject("manager3"));
viewedJobsSet.add(new MyObject("manager4"));
viewedJobsSet.add(new MyObject("manager5"));
viewedJobsSet.add(new MyObject("manager6"));
viewedJobsSet.add(new MyObject("manager7"));
viewedJobsSet.add(new MyObject("manager8"));
viewedJobsSet.add(new MyObject("manager9"));
viewedJobsSet.add(new MyObject("manager9"));
viewedJobsSet.add(new MyObject("manager0"));
viewedJobsSet.add(new MyObject("manager-"));
viewedJobsSet.add(new MyObject("manager1"));
viewedJobsSet.add(new MyObject("manager2"));
viewedJobsSet.add(new MyObject("teacher"));
viewedJobsSet.add(new MyObject("teacher"));
viewedJobsSet.add(new MyObject("teacher"));
viewedJobsSet.add(new MyObject("teacher"));
viewedJobsSet.add(new MyObject("teacher"));
viewedJobsSet.add(new MyObject("teacher"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("police officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
viewedJobsSet.add(new MyObject("fire officer"));
jobsListModel = new ListModelList<MyObject>(viewedJobsSet);
}
@Command("filterJobs")
public void onFilterJobs(@BindingParam("filterValue") String filterValue) {
if(filterValue != null && !filterValue.isEmpty()) {
jobsListModel.clear();
//replace with your logic to filter the list
for (MyObject job : viewedJobsSet) {
if(job.getA().contains(filterValue)) {
jobsListModel.add(job);
org.zkoss.lang.Threads.sleep(20);
}
}
} else {
jobsListModel.clear();
jobsListModel.addAll(viewedJobsSet);
}
}
public ListModelList<MyObject> getJobsListModel() {
return jobsListModel;
}
}
MyObject.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 MyObject {
private String a,b,c,d;
public MyObject() {
a = "adfg";
b = "bdfg";
c = "cdfg";
d = "ddfg";
}
public MyObject(String g) {
a = g+"adfgf";
b = g+"bdfgf";
c = g+"cdfgf";
d = g+"ddfgf";
}
public String getA() {
return a;
}
public String getB() {
return b;
}
public String getC() {
return c;
}
public String getD() {
return d;
}
}