Processing...

Suggested case list:

Using timer to refresh a grid

383guest172.69.33.12125nk0uiMay 7, 2020 7:23:47 AMlink

user model to move item to another listbox

120guest162.158.193.148d0n3krApr 2, 2020 5:28:28 AMlink

Disabled list item row passed to VM-1981

296fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:44 PMlink

Disabled list item row passed to VM-1981

295fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:16 PMlink

Disabled list item row passed to VM-1981

294fatih123160.83.36.13225nk0uiFeb 13, 2018 3:30:44 PMlink

grid sample with ListModel/RowRenderer

816guest80.82.2.1312vah9ajFeb 21, 2017 11:42:21 AMlink

grid sample with ListModel/RowRenderer

809guest175.98.113.1622vah9ajJan 26, 2017 9:19:33 AMlink

grid sample with ListModel/RowRenderer

196guest79.185.142.402vah9ajApr 26, 2014 10:53:57 PMlink

grid sample with ListModel/RowRenderer

195guest79.185.142.402vah9ajApr 26, 2014 10:53:54 PMlink

grid sample with ListModel/RowRenderer

194guest79.185.142.402vah9ajApr 26, 2014 10:53:51 PMlink

grid sample with ListModel/RowRenderer

193guest79.185.142.402vah9ajApr 26, 2014 10:53:48 PMlink

grid sample with ListModel/RowRenderer

192guest79.185.142.402vah9ajApr 26, 2014 10:53:44 PMlink

grid sample with ListModel/RowRenderer

191guest79.185.142.402vah9ajApr 26, 2014 10:53:40 PMlink

Hierarchy table without using ZK PE/EE

1aaknai151.28.135.2131s871daJul 29, 2013 11:02:46 PMlink

grid sample with ListModel/RowRenderer

128aaknai151.28.135.2132vah9ajJul 29, 2013 7:20:00 PMlink

user model to move item to another listbox

1TonyQ114.25.109.94d0n3krApr 21, 2012 10:43:27 AMlink

Using timer to refresh a grid

1TonyQ220.133.44.3725nk0uiFeb 17, 2012 3:17:34 AMlink

Fire a event from child iframe

1TonyQ220.133.44.372eupjotFeb 3, 2012 5:04:52 AMlink

Textbox input restriction sample

1TonyQ72.21.245.2431b3nlr0Dec 20, 2011 10:09:10 AMlink

Test web core taglib in ZUL

1TonyQ198.203.175.175ofqkemDec 17, 2011 3:36:08 AMlink

Latest 10 Fiddles :

constraint binding textbox

3guest172.68.151.16220peldaDec 5, 2025 5:08:19 PMlink

Another new ZK fiddle

2guest172.68.151.16320peldaDec 5, 2025 5:07:51 PMlink

Another new ZK fiddle

1guest172.68.151.16220peldaDec 5, 2025 5:07:32 PMlink

Another new ZK fiddle

1peggypeng172.71.154.99364f4neDec 5, 2025 9:24:31 AMlink

tooltip example

2guest104.22.23.13rc1ntoDec 4, 2025 2:23:45 PMlink

Another new ZK fiddle

1guest172.69.134.2277t7602Dec 4, 2025 1:40:46 PMlink

Another new ZK fiddle

1peggypeng104.22.17.1802df6e3oDec 4, 2025 8:41:29 AMlink

onClose

1peggypeng172.68.87.248j8kd8aDec 3, 2025 4:10:26 AMlink

Another new ZK fiddle

1peggypeng172.69.134.2271rm7f4eNov 26, 2025 3:31:24 AMlink

ZK-5912-Suggestion

2rebeccalai104.22.20.1442qrmiiuNov 26, 2025 2:07:15 AMlink

Another new ZK fiddle

1sbasly108.162.210.142p554t1Sep 13, 2025 5:04:43 PMlink

resources

index.zulzul<zk xmlns:w="client"> <script> zk.afterLoad("zul.sel",function() { zul.sel.DragEventTreerow = zk.$extends(zul.sel.Treerow, { getDragOptions_ : function (map) { var result = Object.assign({},map); var self = this, treeUuid = this.getTree().uuid; var oldstarteffect = result.starteffect; result.starteffect = function(dg) { oldstarteffect.apply(this,arguments); zAu.send(new zk.Event(self, "onStartDrag", {target:self.getDraggable()}, {toServer:true})); console.log(self.getDraggable()); zAu.cmd0.showBusy(treeUuid,"Calculating drag options, please hold"); } var oldendeffect = result.endeffect; result.endeffect = function(dg) { oldendeffect.apply(this,arguments); zAu.send(new zk.Event(self, "onEndDrag", {target:self.getDraggable()}, {toServer:true})); zAu.cmd0.clearBusy(treeUuid); } return result; } }); }); </script> <style> .droppable > .z-treecell { background-color: green; } </style> <div apply="pkg$.DragEventComposer"> <tree id="myTree"> <template name="model"> <treeitem > <treerow w:use="zul.sel.DragEventTreerow" forward="onStartDrag=myTree.onStartDrag,onEndDrag=myTree.onEndDrag,onDrop=myTree.onItemDrop" draggable="${each.data}"> <treecell label="${each.data}"/> </treerow> </treeitem> </template> </tree> </div> </zk>DragEventComposer.javajavaimport java.util.Random; import org.zkoss.json.JSONObject; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.event.DropEvent; import org.zkoss.zk.ui.event.ForwardEvent; 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.zk.ui.util.Clients; import org.zkoss.zul.DefaultTreeModel; import org.zkoss.zul.DefaultTreeNode; import org.zkoss.zul.Tree; import org.zkoss.zul.TreeModel; public class DragEventComposer extends SelectorComposer<Component> { @Wire private Tree myTree; private TreeModel model; @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); TreeModel model = new DefaultTreeModel( new DefaultTreeNode(null, new DefaultTreeNode[] { new DefaultTreeNode("item1"), new DefaultTreeNode("item2", new DefaultTreeNode[] { new DefaultTreeNode("item3", new DefaultTreeNode[] { new DefaultTreeNode("item4"), new DefaultTreeNode("item5") }), new DefaultTreeNode("item6"), new DefaultTreeNode("item7") }) } )); myTree.setModel(model); } @Listen("onStartDrag=#myTree") public void doOnStartTreeitemDrag(ForwardEvent evt) throws InterruptedException { Thread.sleep(500); //simulate delay String draggableId = (String) ((JSONObject)evt.getOrigin().getData()).get("target"); //retrieve the value of the draggable field on event source Random random = new Random(); //create randomness for demo purpose myTree.getItems().forEach(treeitem -> { if(random.nextBoolean()) {//create randomness for demo purpose /*should be droppable, put class and set droppable ID*/ treeitem.getTreerow().setDroppable(draggableId); treeitem.getTreerow().setSclass("droppable"); } else { /*not droppable, remove droppable status if any, remove class if any*/ treeitem.getTreerow().setDroppable("false"); treeitem.getTreerow().setSclass(null); } }); /*ready: remove mask on tree*/ Clients.clearBusy(myTree); } @Listen("onEndDrag=#myTree") public void doOnEndTreeitemDrag(ForwardEvent evt) throws InterruptedException { /*either drop complete, or user let go before drop. remove all droppable, all drop class, and processing mask if any*/ myTree.getItems().forEach(treeitem -> { treeitem.getTreerow().setDroppable("false"); treeitem.getTreerow().setSclass(null); }); Clients.clearBusy(myTree); } @Listen("onItemDrop=#myTree") public void doItemDrop(ForwardEvent event) { Clients.log("dropped" + ((DropEvent)event.getOrigin()).getTarget()); } }