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

accordion tab setSelected

2guest108.162.215.12925gmjjgDec 8, 2021 9:06:14 AMlink

resources

index.zulzul<zk xmlns:w="client"> <script><![CDATA[ zk.afterLoad('zul.tab', function() { //specify zk widget package name var _xTab = {}; zk.override(zul.tab.Tab.prototype, _xTab, { /** * Returns whether this tab is selected. * @return boolean */ isSelected: function () { var tabbox = this.getTabbox(); return tabbox && tabbox.getSelectedTab() == this; }, /** * Sets whether this tab is selected. * @param boolean selected */ setSelected: function (selected, fromServer) { var tabbox = this.getTabbox(); if (tabbox && selected) { tabbox.setSelectedTab(this, fromServer); } }, _sel: function (toSel, notify) { var tabbox = this.getTabbox(), panel = this.getLinkedPanel(), inAccordion = tabbox.inAccordionMold(); if (toSel) { var ps; if (ps = tabbox.tabpanels) { if (ps._selPnl && ps._selPnl != panel) ps._selPnl._sel(false, inAccordion); ps._selPnl = panel; //stored in tabpanels } tabbox._selTab = this; } if (!this.desktop) return; if (toSel) jq(this).addClass(this.$s('selected')); else jq(this).removeClass(this.$s('selected')); if (panel && panel.isVisible()) //Bug ZK-1618: not show tabpanel if visible is false panel._sel(toSel, true); if (!inAccordion) { var tabs = this.parent; if (tabs) tabs._fixWidth(toSel); //ZK-2810: don't set height to tabbox when deselect } if (toSel) { if (tabbox.isVertical()) tabs._scrollcheck('vsel', this); else if (!tabbox.inAccordionMold()) tabs._scrollcheck('sel', this); } if (notify) this.fire('onSelect', {items: [this], reference: this.uuid}); }, doClick_: function (evt) { if (this._disabled) return; /* ZK-1441 * If tabbox is animating (end-user click different tabs quickly), ignore this action. */ var tabbox = this.getTabbox(); if (tabbox && tabbox._animating) return; this.setSelected(true); this.$supers('doClick_', arguments); }, bind_: function (desktop, skipper, after) { this.$supers(zul.tab.Tab, 'bind_', arguments); var closebtn = this.isClosable() ? this.$n('cls') : null; if (closebtn) { this.domListen_(closebtn, 'onClick', '_doCloseClick'); } if (this.getHeight()) this._calcHgh(); //ZK-3016 make sure parent always do scrollCheck on child bind this.parent._shallCheck = true; } }); var _xTabbox = {}; zk.override(zul.tab.Tabbox.prototype, _xTabbox, { setSelectedTab: function (tab, fromServer) { if (this._selTab != tab) { this._setSel(tab, !fromServer); this._selTab = tab; } }, bind_: function (desktop, skipper, after) { this.$supers(zul.tab.Tabbox, 'bind_', arguments); // used in Tabs.js this._scrolling = false; var toolbar = this.getToolbar(); if (this.inAccordionMold()) zWatch.listen({onResponse: this}); else if (toolbar && this.getTabs()) { zWatch.listen({onResponse: this}); this._toolbarWidth = jq(toolbar.$n()).width(); } for (var btn, key = ['right', 'left', 'down', 'up'], le = key.length; le--;) if (btn = this.$n(key[le])) this.domListen_(btn, 'onClick', '_doClick', key[le]); this._fixMaxHeight(); zk.afterMount(this.proxy(function () { var tabs = this.tabs, seltab = this._selTab; if (seltab && tabs) { if (this.isVertical()) tabs._scrollcheck('vsel', seltab); else if (!this.inAccordionMold()) tabs._scrollcheck('sel', seltab); } })); }, _setSel: function (newtab, notify) { if (newtab) { var oldtab = this._selTab; if (oldtab != newtab) { if (oldtab && this.inAccordionMold()) { var p = newtab.getLinkedPanel(); if (p) p._changeSel(oldtab.getLinkedPanel()); } if (oldtab && oldtab != newtab) oldtab._sel(false, false); newtab._sel(true, notify); } } } }); }); ]]></script> <window title="Tab accordion setSelected example" border="normal" width="600px" apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('pkg$.MainVM')"> <tabbox height="100%" mold="accordion" model="@init(vm.tabModel)"> <template name="model:tab" var="accordion"> <tab label="@init(accordion.name)" /> </template> <template name="model:tabpanel" var="accordion"> <tabpanel> <textbox constraint="no empty" /> </tabpanel> </template> </tabbox> <button onClick="@command('verify')" label="Verify" /> </window> </zk>MainVM.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 org.zkoss.bind.annotation.*; import org.zkoss.bind.*; import org.zkoss.zul.impl.*; import java.util.*; import java.util.stream.*; public class MainVM { private Component view; private List<Scope> tabModel = new ArrayList<>(); @org.zkoss.bind.annotation.Init public void init( @ContextParam(ContextType.VIEW) final Component view) { this.view = view; tabModel.add(new Scope("Tab 1")); tabModel.add(new Scope("Tab 2")); tabModel.add(new Scope("Tab 3")); } public List<Scope> getTabModel() { return tabModel; } @Command public void verify() { checkConstraints(view); } private void checkConstraints(final Component component) throws WrongValueException { Component tab = component; if (component instanceof Tabpanel) { tab = ((Tabpanel) component).getLinkedTab(); } if (tab.isVisible()) { if (component instanceof InputElement) { InputElement input = (InputElement) component; if (input.isVisible() && !input.isDisabled() && !input.isValid()) { Clients.scrollIntoView(input); input.getText(); // Force show errorMessage } } for (Component each : component.getChildren()) { try { checkConstraints(each); } catch (WrongValueException e) { if (tab instanceof Tab) { ((Tab) tab).setSelected(true); } throw e; } } } } } Scope.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 Scope { private final String name; public Scope(String name) { this.name = name; } public String getName() { return name; } }