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 :
Another new ZK fiddle
31guest172.70.131.691mlke7fOct 3, 2023 6:27:23 PMlinkAnother new ZK fiddle
30guest172.70.178.1641mlke7fOct 3, 2023 6:26:11 PMlinkAnother new ZK fiddle
29guest172.70.178.1641mlke7fOct 3, 2023 6:26:09 PMlinkAnother new ZK fiddle
28guest172.70.100.1751mlke7fOct 3, 2023 6:24:37 PMlinkAnother new ZK fiddle
27guest108.162.216.1141mlke7fOct 3, 2023 6:13:35 PMlinkAnother new ZK fiddle
26guest172.70.179.1001mlke7fOct 3, 2023 6:08:44 PMlinkAnother new ZK fiddle
25guest172.70.179.991mlke7fOct 3, 2023 6:08:32 PMlinkAnother new ZK fiddle
24guest172.70.179.1001mlke7fOct 3, 2023 6:07:56 PMlinkAnother new ZK fiddle
23guest172.69.59.721mlke7fOct 3, 2023 6:06:42 PMlinkAnother new ZK fiddle
22guest172.70.178.1521mlke7fOct 3, 2023 6:04:10 PMlinkdropupload and fileupload
1guest187.16.227.228mh6l3fJul 9, 2018 2:10:42 AMlinkresources
index.zulzul<zk>
<style>
.z-dropupload{
height: 200px;
width: 200px;
border-radius: 0px;
padding: 10px;
background-color: #79e;
border: 1px solid #9e7;
text-align: center;
font-family: Arial;
}
.is-dragover{
background-color: #9e7;
border: 1px solid #79e;
}
</style>
<script type="text/javascript"><![CDATA[
// Not requiered: add a is-dragover class for easy CSS customization on hover
initHoverClass = function(wgt){
node=jq(wgt);
node.on('drag dragstart dragend dragover dragenter dragleave drop', function(e) {
e.preventDefault();
e.stopPropagation();
})
.on('dragover dragenter', function() {
node.addClass('is-dragover');
})
.on('dragleave dragend drop', function() {
node.removeClass('is-dragover');
})
}
]]></script>
<div xmlns:w="client" apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('pkg$.UploadViewModel')">
<dropupload w:onBind="initHoverClass(this)" detection="none" content="Click or drag files here"
width="200px"
apply="pkg$.UploadComposer"
onUpload="@command('doUploadFiles', files=event.medias)">
</dropupload>
<image id="image" />
</div>
</zk>UploadComposer.javajavaimport java.util.HashMap;
import java.util.Map;
import org.zkoss.bind.BindUtils;
import org.zkoss.util.media.Media;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.EventQueues;
import org.zkoss.zk.ui.event.UploadEvent;
import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zul.Fileupload;
//Add click to upload behavior to dropUpload, Composers can be used for granular control in MVVM pattern as long as they don't affect MVVM states
public class UploadComposer extends SelectorComposer {
@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
comp.addEventListener("onClick", new EventListener<Event>() {
@Override
public void onEvent(Event event) throws Exception {
Fileupload.get(new EventListener<UploadEvent>(){
@Override
public void onEvent(UploadEvent event) throws Exception {
Media media = event.getMedia();
Map<String,Object> argMap = new HashMap();
Media[] filesArray = {media};
argMap.put("files",filesArray);
// notify VM
BindUtils.postGlobalCommand(null, EventQueues.DESKTOP, "doUploadFiles", argMap);
}
});
}
});
}
}
UploadViewModel.javajava
import org.zkoss.bind.annotation.BindingParam;
import org.zkoss.bind.annotation.GlobalCommand;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.Init;
import org.zkoss.util.media.Media;
import org.zkoss.zk.ui.util.Clients;
public class UploadViewModel {
// demo use: keep file names in a string
private String uploaded;
@Init
public void init(){
uploaded = "";
}
//do something after upload
@GlobalCommand
@Command
public void doUploadFiles(@BindingParam("files") Media[] files) {
for (Media file : files) {
uploaded += file.getName();
uploaded += " - ";
}
Clients.log(uploaded);
}
}