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 AMlinkMVVM test
10guest113.190.240.471b7g8spJul 29, 2015 9:35:50 AMlinkresources
index.zulzul<?page title="Auto Generated index.zul"?>
<window title="Hello World!!" border="normal" width="100%">
<div apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('pkg$.CustomerController')">
<grid>
<columns visible="false">
<column></column>
</columns>
<rows>
<row spans="1">
<hlayout>
<button id="btn_AddCustomer" onClick="@command('onClick_btn_AddCustomer')"
label="Thêm Khách Hàng" />
</hlayout>
</row>
<row spans="1">
<listbox id="ds2" height="500px" emptyMessage="Không Có Khách Hàng" model="@load(vm.listCus)">
<auxhead>
<auxheader colspan="17">
<label>Danh Sách Khách Hàng</label>
</auxheader>
</auxhead>
<listhead>
<listheader label="Mã Khách Hàng" align="center" />
<listheader label="Loại Khách Hàng" align="center" />
<listheader label="Khu Vực" align="center" />
<listheader label="Tên Khách Hàng" align="center" />
<listheader label="Địa Chỉ" align="center" />
<listheader label="Mã Số Thuế" align="center" />
<listheader label="Fax" align="center" />
<listheader label="Số Điện Thoại" align="center" />
<listheader label="Số Di Động" align="center" />
<listheader label="Email" align="center" />
<listheader label="Websile" align="center" />
<listheader label="Số Tài Khoản" align="center" />
<listheader label="Tên Ngân Hàng" align="center" />
<listheader label="Giới Hạn Nợ" align="center" />
<listheader label="Nợ Hiện Tại" align="center" />
<listheader label="Chiết Khấu" align="center" />
<listheader label="Người Liên Hệ" align="center" />
</listhead>
<template name="model" var="listCus">
<listitem>
<listcell label="@load(listCus.customerCode)">
</listcell>
<listcell>
<image src="@load(listCus.customerType eq true ? 'img/daily.png' : 'img/khachle.png')">
</image>
</listcell>
<listcell>
<label value="@load(listCus.region)" />
</listcell>
<listcell>
<label value="@load(listCus.customerName)" />
</listcell>
<listcell>
<label value="@load(listCus.customerAdress)" />
</listcell>
<listcell>
<label value="@load(listCus.tax)" />
</listcell>
<listcell>
<label value="@load(listCus.fax)" />
</listcell>
<listcell>
<label value="@load(listCus.tel)" />
</listcell>
<listcell>
<label value="@load(listCus.mobile)" />
</listcell>
<listcell>
<label value="@load(listCus.email)" />
</listcell>
<listcell>
<label value="@load(listCus.website)" />
</listcell>
<listcell>
<label value="1" />
</listcell>
<listcell>
<label value="2" />
</listcell>
<listcell>
<label value="@load(listCus.limitOwe)" />
</listcell>
<listcell>
<label value="@load(listCus.owe)" />
</listcell>
<listcell>
<label value="@load(listCus.discount)" />
</listcell>
<listcell>
<label value="@load(listCus.contact)" />
</listcell>
</listitem>
</template>
</listbox>
</row>
</rows>
</grid>
</div>
</window>CustomerController.javajava
import java.awt.Event;
import java.util.ArrayList;
import java.util.List;
import org.zkoss.zul.Window;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.Init;
import org.zkoss.bind.annotation.NotifyChange;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.annotation.Listen;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zul.Intbox;
import org.zkoss.zul.Radio;
import org.zkoss.zul.Textbox;
public class CustomerController extends SelectorComposer<Component> {
private static final long serialVersionUID = 1L;
private static List<Customers> listCus = FillCustomer();
private static Customers cusSelect = null;
@Wire
private Window frmAddCustomer;
@Wire
private Radio rdb_frmAddCustomer_CusType;
@Wire
private Intbox itb_frmAddCustomer_CusCode,itb_frmAddCustomer_LimitOwe,itb_frmAddCustomer_Owe
,itb_frmAddCustomer_Discount;
@Wire
private Textbox txt_frmAddCustomer_Region,txt_frmAddCustomer_CusName,txt_frmAddCustomer_CusAdress,
txt_frmAddCustomer_Tax,txt_frmAddCustomer_Fax,txt_frmAddCustomer_Tel,txt_frmAddCustomer_Mobile,
txt_frmAddCustomer_Email,txt_frmAddCustomer_Website,txt_frmAddCustomer_BankAccountNumber,
txt_frmAddCustomer_BankName,txt_frmAddCustomer_Contact;
/*public static List<Customer> lstCustomer = getListCustomer();*/
@Command
@NotifyChange("*")
public void onClick_btn_AddCustomer(Event e){
org.zkoss.zul.Window w = (Window) Executions.createComponents("/AdCustomer.zul", null, null);
w.doModal();
}
@Listen("onClick = #itb_frmAddCustomer_CusCode; " + "onChange = #itb_frmAddCustomer_CusCode")
private boolean validForm(){
boolean isValid = true;
long cusCode = itb_frmAddCustomer_CusCode.getValue();
if(cusCode <= 0)
isValid = false;
return isValid;
}
@Listen("onClick = #btn_frmAddCustomer_Save")
public void onClick_btn_frmAddCustomer_Save(){
if (validForm())
{
Customers cus = new Customers();
cus.setCustomerCode(itb_frmAddCustomer_CusCode.getValue());
cus.setCustomerName(txt_frmAddCustomer_CusName.getValue());
cus.setCustomerType(rdb_frmAddCustomer_CusType.isChecked());
cus.setCustomerAdress(txt_frmAddCustomer_CusAdress.getValue());
cus.setTax(txt_frmAddCustomer_Tax.getValue());
cus.setFax(txt_frmAddCustomer_Fax.getValue());
cus.setTel(txt_frmAddCustomer_Tel.getValue());
cus.setMobile(txt_frmAddCustomer_Mobile.getValue());
cus.setEmail(txt_frmAddCustomer_Email.getValue());
cus.setWebsite(txt_frmAddCustomer_Website.getValue());
cus.setContact(txt_frmAddCustomer_Contact.getValue());
cus.setLimitOwe(itb_frmAddCustomer_LimitOwe.getValue());
cus.setOwe(itb_frmAddCustomer_Owe.getValue());
cus.setDiscount(itb_frmAddCustomer_Discount.getValue());
}
}
private static List<Customers> FillCustomer(){
customerDAO cusDA = new customerDAO();
List<Customers> lstCus = cusDA.findAll();
return lstCus;
}
@Init
public void init(){
CustomerController.listCus = FillCustomer();
if(!listCus.isEmpty()){
setCusSelect(listCus.get(0));
}
}
public static Customers getCusSelect() {
return cusSelect;
}
public static void setCusSelect(Customers cusSelect) {
CustomerController.cusSelect = cusSelect;
}
public static List<Customers> getListCus() {
return listCus;
}
public static void setListCus(List<Customers> listCus) {
CustomerController.listCus = listCus;
}
}
customerDAO.javajava
import java.util.LinkedList;
import java.util.List;
public class customerDAO {
public List<Customers> findAll() {
List<Customers> lstCus = new LinkedList<Customers>();
lstCus.add(new Customers(1,"nguyen van luan","hung yen",false,"","","","","","","",12,0,0,""));
lstCus.add(new Customers(2,"nguyen van luan 2","hung yen 2",false,"","","","","","","",16,0,0,""));
return lstCus;
}
}
Customers.javajavapublic class Customers implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private int customerCode;
private String customerName;
private String customerAdress;
private Boolean customerType;
private String region;
private String tax;
private String fax;
private String tel;
private String mobile;
private String email;
private String website;
private Integer limitOwe;
private Integer owe;
private Integer discount;
private String contact;
public Customers() {
}
public Customers(int customerCode) {
this.customerCode = customerCode;
}
public Customers(int customerCode, String customerName,
String customerAdress, Boolean customerType, String region,
String tax, String fax, String tel, String mobile, String email,
String website, Integer limitOwe, Integer owe, Integer discount,
String contact) {
this.customerCode = customerCode;
this.customerName = customerName;
this.customerAdress = customerAdress;
this.customerType = customerType;
this.region = region;
this.tax = tax;
this.fax = fax;
this.tel = tel;
this.mobile = mobile;
this.email = email;
this.website = website;
this.limitOwe = limitOwe;
this.owe = owe;
this.discount = discount;
this.contact = contact;
}
public int getCustomerCode() {
return this.customerCode;
}
public void setCustomerCode(int customerCode) {
this.customerCode = customerCode;
}
public String getCustomerName() {
return this.customerName;
}
public void setCustomerName(String customerName) {
this.customerName = customerName;
}
public String getCustomerAdress() {
return this.customerAdress;
}
public void setCustomerAdress(String customerAdress) {
this.customerAdress = customerAdress;
}
public Boolean getCustomerType() {
return this.customerType;
}
public void setCustomerType(Boolean customerType) {
this.customerType = customerType;
}
public String getRegion() {
return this.region;
}
public void setRegion(String region) {
this.region = region;
}
public String getTax() {
return this.tax;
}
public void setTax(String tax) {
this.tax = tax;
}
public String getFax() {
return this.fax;
}
public void setFax(String fax) {
this.fax = fax;
}
public String getTel() {
return this.tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getMobile() {
return this.mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getEmail() {
return this.email;
}
public void setEmail(String email) {
this.email = email;
}
public String getWebsite() {
return this.website;
}
public void setWebsite(String website) {
this.website = website;
}
public Integer getLimitOwe() {
return this.limitOwe;
}
public void setLimitOwe(Integer limitOwe) {
this.limitOwe = limitOwe;
}
public Integer getOwe() {
return this.owe;
}
public void setOwe(Integer owe) {
this.owe = owe;
}
public Integer getDiscount() {
return this.discount;
}
public void setDiscount(Integer discount) {
this.discount = discount;
}
public String getContact() {
return this.contact;
}
public void setContact(String contact) {
this.contact = contact;
}
}