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 AMlinkPropertyAdmin
206DavidTRegenstrief149.163.158.17930gii29Dec 9, 2016 9:31:39 PMlinkresources
index.zulzul<zk>
<window title="hello" apply="pkg$.PropertyValueController" height="600px">
<div>Welcome to ZK Fiddle , run it right now!</div>
<!--
<borderlayout>
<north>
-->
<groupbox id="propertyValueGroup" style="background-color:#e6ffe6;margin:20px" height="100%">
<button id="create_property_value" label="Create Prop Value"/>
<caption label="Property Values" />
<grid id="propertyValueGrid" height="100%" model="${$composer.propertyValueModel}">
<custom-attributes org.zkoss.zul.grid.rod="true"/>
<columns>
<column label="Name" />
<column label="Entity Value" />
<column label="Entity Id" />
<column label="Value" />
<column label="Id"/>
<column label="Action" />
</columns>
<template name="model">
<row popup="detail_${each.propertyValueId}" style="cursor:pointer">
<div>
<label value="${each.propertyName}"/>
<popup id="detail_${each.propertyValueId}">
<include src="propertyValueDetail.zul" newPV="${each}"/>
</popup>
<!--
-->
</div>
<label value="${each.propertyName}"/>
<label value="${each.propertyEntityValue}"/>
<label value="${each.propertyEntityId}"/>
<label value="${each.propertyValue}"/>
<label value="${each.propertyValueId}"/>
<a label="delete"/>
</row>
</template>
</grid>
</groupbox>
<!--
</north>
<center>
<hlayout>
<groupbox id="propertyDefinitionGroup" height="400px" style="background-color:#e6ffe6;">
<button id="create_property_def" label="Create Property Definition"/>
<caption label="Property Definitions" />
<hlayout height="380px">
<grid id="propertyDefGrid" vflex="1" hflex="1" model="${$composer.propertyDefModel}">
<custom-attributes org.zkoss.zul.grid.rod="true"/>
<columns>
<column label="Name" />
<column label="Entity Value" />
<column label="Entity Id" />
<column label="Value" />
<column label="Action" />
</columns>
<template name="model">
<row>
<a label="${each.propertyName}"/>
<label value="${each.propertyEntityValue}"/>
<label value="${each.propertyEntityId}"/>
<label value="${each.propertyValue}"/>
<a id="${each.propertyName}" label="delete"/>
</row>
</template>
</grid>
</hlayout>
</groupbox>
<groupbox id="propertyAttrValueGroup" height="400px" style="background-color:#e6ffe6;">
<button id="create_property_entity" label="Create Prop Entity"/>
<caption label="Property Entities" />
<hlayout height="380px">
<grid id="packageBuildGrid" vflex="1" hflex="1" model="${$composer.propertyEntityModel}">
<custom-attributes org.zkoss.zul.grid.rod="true"/>
<columns>
<column label="Name" />
<column label="Entity Value" />
<column label="Entity Id" />
<column label="Value" />
<column label="Action" />
</columns>
<template name="model">
<row>
<a label="${each.propertyName}"/>
<label value="${each.propertyEntityValue}"/>
<label value="${each.propertyEntityId}"/>
<label value="${each.propertyValue}"/>
<a id="${each.propertyName}" label="delete"/>
</row>
</template>
</grid>
</hlayout>
</groupbox>
</hlayout>
</center>
</borderlayout>
-->
</window>
</zk>
PropertyValueController.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 java.util.List;
import java.util.Date;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.util.HashMap;
public class PropertyValueController extends GenericForwardComposer{
PropertyValue[] pv = new PropertyValue[] {
// propertyName, EntityValue, EntityId, EntityValueSysId, Value, appInstance, multiValuedSeqNum, createDate, updateDate)
new PropertyValue("CDS.PACKAGE_BUILD_REF", "1" , 800, "Local", "RENAL_STUDY", null, 0, new Date(), new Date()),
new PropertyValue("CDS.PACKAGE_BUILD_REF", "2" , 800, "Local", "RENAL_STUDY", null, 0, new Date(), new Date()),
new PropertyValue("CDS.PACKAGE_BUILD_REF", "3" , 800, "Local", "RENAL_STUDY", null, 0, new Date(), new Date()),
new PropertyValue("CDS.PACKAGE_BUILD_REF", "4" , 800, "Local", "RENAL_STUDY", null, 0, new Date(), new Date()),
new PropertyValue("CDS.PACKAGE_BUILD_REF", "5" , 800, "Local", "RENAL_STUDY", null, 0, new Date(), new Date()),
new PropertyValue("CDS.PACKAGE_BUILD_REF", "6" , 800, "Local", "RENAL_STUDY", null, 0, new Date(), new Date()),
new PropertyValue("CDS.PACKAGE_BUILD_REF", "7" , 800, "Local", "RENAL_STUDY", null, 0, new Date(), new Date()),
new PropertyValue("CDS.PACKAGE_BUILD_REF", "8" , 800, "Local", "RENAL_STUDY", null, 0, new Date(), new Date()),
new PropertyValue("CDS.PACKAGE_BUILD_REF", "9" , 800, "Local", "RENAL_STUDY", null, 0, new Date(), new Date()),
new PropertyValue("CDS.PACKAGE_BUILD_REF", "10" , 800, "Local", "RENAL_STUDY", null, 0, new Date(), new Date())
};
// PropertyDefinition[] pd = new PropertyDefinition[] {
// new PropertyDefinition("CDS.PACKAGE_BUILD_REF", "1" , 800, 1, "RENAL_STUDY", null, 0, new Date(), new Date())
// };
//
// PropertyEntity[] pe = new PropertyEntity[] {
// new PropertyEntity("CDS.PACKAGE_BUILD_REF", "1" , 800, 1, "RENAL_STUDY", null, 0, new Date(), new Date())
// };
List<PropertyValue> pvList = new ArrayList<PropertyValue>(Arrays.asList(pv));
Groupbox propertyValueGroup;
Grid propertyValueGrid;
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
}
public void onClick$btn(Event e) throws InterruptedException{
Messagebox.show("Hi btn");
}
public ListModel<PropertyValue> getPropertyValueModel() {
return new SimpleListModel(pvList);
}
public void onClick$create_property_value(Event event) {
Map<String, Object> args = new HashMap<String,Object>();
args.put("callingController", this);
args.put("propDefName", "CDS.PACKAGE_BUILD_REF");
args.put("propValue", "");
args.put("propEntityId", 100);
args.put("propEntityValue", "");
args.put("propEntityValueSys", "Local");
args.put("appInstance", "Test App");
args.put("multiValueSeq", 1);
Window window = (Window)Executions.createComponents("propertyValueDetail.zul", null, args);
window.doModal();
}
public void addPV(PropertyValue newPV) {
pvList.add(newPV);
propertyValueGrid.setModel(getPropertyValueModel());
propertyValueGrid.renderAll();
}
public void showBox(String message) {
Messagebox.show(message, "Warning", Messagebox.OK, Messagebox.EXCLAMATION);
}
// public ListModel<PropertyValue> getPropertyDefModel() {
// return new SimpleListModel(pd);
// }
//
// public ListModel<PropertyValue> getPropertyEntityModel() {
// return new SimpleListModel(pe);
// }
}
PropertyValue.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 java.util.Date;
public class PropertyValue { //extends ModelBase<PropertyValue> {
private String propertyName = null;
private int propertyEntityId = 0;
private String propertyEntityValue = null;
private String applicationInstance = null;
private int multiValuedSequenceNumber = 0;
private Date createDate = null;
private Date updateDate = null;
private String propertyValue = null;
private String propertyEntityValueSysId = "Local";
public PropertyValue() {
}
public PropertyValue(final PropertyValue pv2) {
if (pv2 == null) {
return;
}
setPropertyName(pv2.getPropertyName());
setPropertyEntityId(pv2.getPropertyEntityId());
setPropertyEntityValue(pv2.getPropertyEntityValue());
setApplicationInstance(pv2.getApplicationInstance());
setMultiValuedSequenceNumber(pv2.getMultiValuedSequenceNumber());
setCreateDate(pv2.getCreateDate());
setUpdateDate(pv2.getUpdateDate());
setPropertyValue(pv2.getPropertyValue());
}
public PropertyValue(String propertyName, String propertyEntityValue, int propertyEntityId, String propertyEntityValueSysId, String propertyValue, String applicationInstance, int multiValuedSequenceNumber, Date createDate, Date updateDate) {
this.propertyName = propertyName;
this.propertyEntityValue = propertyEntityValue;
this.propertyEntityValueSysId = propertyEntityValueSysId;
this.propertyEntityId = propertyEntityId;
this.propertyValue = propertyValue;
this.applicationInstance = applicationInstance;
this.multiValuedSequenceNumber = multiValuedSequenceNumber;
this.createDate = createDate;
this.updateDate = updateDate;
}
public String getPropertyName() {
return this.propertyName;
}
/**
* @param propertyName
* the propertyName to set
*/
public void setPropertyName(final String propertyName) {
this.propertyName = propertyName;
}
/**
* @return the propertyEntityId
*/
public int getPropertyEntityId() {
return this.propertyEntityId;
}
/**
* @param propertyEntityId
* the propertyEntityId to set
*/
public void setPropertyEntityId(final int propertyEntityId) {
this.propertyEntityId = propertyEntityId;
}
/**
* @return the propertyEntityValue
*/
public String getPropertyEntityValue() {
return getPropertyEntityValueCode();
}
/**
* @return the propertyEntityValueCode
*/
public String getPropertyEntityValueCode() {
return this.propertyEntityValue;
}
/**
* @param propertyEntityValue
* the propertyEntityValue to set
*/
public void setPropertyEntityValue(final String propertyEntityValue) {
setPropertyEntityValueCode(propertyEntityValue);
}
/**
* @param propertyEntityValueCode
* the propertyEntityValueCode to set
*/
public void setPropertyEntityValueCode(final String propertyEntityValueCode) {
this.propertyEntityValue = propertyEntityValueCode;
}
/**
* @return the institutionId
*/
public String getPropertyEntityValueSysId() {
return this.propertyEntityValueSysId;
}
/**
* @param propertyEntityValueSysId
* the propertyEntityValueSysId to set
*/
public void setPropertyEntityValueSysId(final String propertyEntityValueSysId) {
this.propertyEntityValueSysId = propertyEntityValueSysId;
}
/**
* @return the applicationInstance
*/
public String getApplicationInstance() {
return this.applicationInstance;
}
/**
* @param applicationInstance
* the applicationInstance to set
*/
public void setApplicationInstance(final String applicationInstance) {
this.applicationInstance = applicationInstance;
}
/**
* @return the multiValuedSequenceNumber
*/
public int getMultiValuedSequenceNumber() {
return this.multiValuedSequenceNumber;
}
/**
* @param multiValuedSequenceNumber
* the multiValuedSequenceNumber to set
*/
public void setMultiValuedSequenceNumber(final int multiValuedSequenceNumber) {
this.multiValuedSequenceNumber = multiValuedSequenceNumber;
}
/**
* @return the createDate
*/
public Date getCreateDate() {
return this.createDate;
}
/**
* @param d
* the createDate to set
*/
public void setCreateDate(final Date d) {
this.createDate = d;
}
/**
* @return the updateDate
*/
public Date getUpdateDate() {
return this.updateDate;
}
/**
* @param updateDate
* the updateDate to set
*/
public void setUpdateDate(final Date updateDate) {
this.updateDate = updateDate;
}
/**
* @return the propertyValue
*/
public String getPropertyValue() {
return this.propertyValue;
}
/**
* @param propertyValue
* the propertyValue to set
*/
public void setPropertyValue(final String propertyValue) {
this.propertyValue = propertyValue;
}
public PropertyValue copy() {
return new PropertyValue(this);
}
public String getPropertyValueId() {
// return String.format("%s_%s_%s_%s", propertyName, propertyValue, propertyEntityId, propertyEntityValue);
return String.format("%s", propertyEntityValue);
}
}
propertyValueDetail.zulzul<!--
<zk>
<window id="propertyDetailDlg" border="normal" title="hello" apply="pkg$.PropertyValueDetail" width="300px" height="600px">
<custom-attributes callingController="${args.callingController}"/>
<div>Welcome to ZK Fiddle , run it right now!</div>
-->
<div width="300px" height="400px">
<vlayout >
<grid>
<columns/>
<rows>
<row>
<cell><label value="Name" tooltip="Property Definition Name"/></cell>
<cell><textbox id="property_def_name" value="${arg.propDefName}"/></cell>
</row>
<row >
<cell><label value="Value" tooltip="Property Value"/></cell>
<cell><textbox id="property_value" value="${arg.propValue}"/></cell>
</row>
<row >
<cell><label value="Entity ID" tooltip="Property Entity ID e.g., 100,800, etc."/></cell>
<cell><textbox id="property_entity_id" value="${arg.propEntityId}"/></cell>
</row>
<row>
<cell><label value="Entity Value" tooltip="Property Entity Value, e.g., user name, location name, org."/></cell>
<cell><textbox id="property_entity_value" value="${arg.propEntityValue}"/></cell>
</row>
<row>
<cell><label value="Entity Value System" tooltip="Property Value System, e.g., 1"/></cell>
<cell><textbox id="property_entity_value_system" value="${arg.propEntityValueSys}"/></cell>
</row>
<row>
<cell><label value="Application Instance" tooltip="Application Instance (name of application - allows properties unique to an application instance."/> </cell>
<cell><textbox id="app_instance" value="${arg.appInstance}"/></cell>
</row>
<row>
<cell><label value="Multiple Value Sequence" tooltip="Multiple Value Sequence, some property values can be multi-row, in those cases unique sequence value is required."/> </cell>
<cell><textbox id="multiple_value_sequence" value="${arg.multiValueSeq}"/></cell>
</row>
</rows>
</grid>
<hlayout>
<button id="saveBtn" label="Save" />
<a id="cancelBtn" label="cancel"/>
</hlayout>
</vlayout>
</div>
<!--
</window>
</zk>
-->
PropertyValueDetail.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 java.util.Date;
public class PropertyValueDetail extends GenericForwardComposer{
Window propertyDetailDlg;
Textbox property_def_name;
Textbox property_value;
Textbox property_entity_id;
Textbox property_entity_value;
Textbox property_entity_value_system;
Textbox app_instance;
Textbox multiple_value_sequence;
PropertyValueController callingController;
PropertyValue newPV;
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
this.callingController = (PropertyValueController) arg.get("callingController");
if ( ! arg.containsKey("propDefName") ) {
if ( newPV != null ) {
callingController.showBox("arg doesn't contain key so setting directly from newPV");
property_def_name.setValue(newPV.getPropertyName());
property_value.setValue(newPV.getPropertyValue());
property_entity_id.setValue(String.valueOf(newPV.getPropertyEntityId()));
property_entity_value.setValue(newPV.getPropertyEntityValue());
property_entity_value_system.setValue(newPV.getPropertyEntityValueSysId());
app_instance.setValue(newPV.getApplicationInstance());
multiple_value_sequence.setValue(String.valueOf(newPV.getMultiValuedSequenceNumber()));
} else {
callingController.showBox("arg doesn't contain key but newPV is null");
}
} else {
callingController.showBox("arg doesn't contain key but newPV is null");
}
}
public void onClick$btn(Event e) throws InterruptedException{
Messagebox.show("Hi btn");
}
public void onClick$cancelBtn(Event e) {
this.getRoot().detach();
}
public void onClick$saveBtn(Event e) {
newPV = new PropertyValue(
property_def_name.getValue(),
property_entity_value.getValue(),
Integer.parseInt(property_entity_id.getValue()),
property_entity_value_system.getValue(),
property_value.getValue(),
app_instance.getValue(),
Integer.parseInt(multiple_value_sequence.getValue()),
new Date(), new Date());
callingController.addPV(newPV);
propertyDetailDlg.detach();
}
public void setNewPV(PropertyValue newPV) {
this.newPV = newPV;
}
}