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 :
LocalDate in datebox
15guest172.68.24.1903bb0ad1Mar 6, 2021 2:16:56 AMlinkLocalDate in datebox
14guest172.68.24.1903bb0ad1Mar 6, 2021 2:16:13 AMlinkLocalDate in datebox
13guest172.68.24.1903bb0ad1Mar 6, 2021 2:15:37 AMlinkLocalDate in datebox
12guest172.68.24.1903bb0ad1Mar 6, 2021 2:15:16 AMlinkscroll grid to last row after render
2guest162.158.203.92l2f86rMar 5, 2021 3:05:52 PMlinkscroll grid to last row after render
1guest162.158.203.92l2f86rMar 5, 2021 3:05:39 PMlinkAnother new ZK fiddle
10MDuchemin172.69.33.221h7t36lMar 5, 2021 8:53:39 AMlinkAnother new ZK fiddle
9MDuchemin172.69.33.221h7t36lMar 5, 2021 8:49:47 AMlinkAnother new ZK fiddle
8MDuchemin172.69.33.221h7t36lMar 5, 2021 8:49:39 AMlinkAnother new ZK fiddle
7MDuchemin172.69.33.221h7t36lMar 5, 2021 8:49:30 AMlinkZK checkmark listbox
10MDuchemin172.69.34.1763gunesaJan 19, 2021 10:33:52 AMlinkresources
index.zulzul<zk xmlns:w="client">
<hlayout>
<script><![CDATA[
zk.afterLoad("zul.sel", function () {
var _xlistbox = {};
function _beforeChildKey(wgt, evt) {
return zAu.processing() || wgt._shallIgnore(evt);
}
function _afterChildKey(evt) {
switch (evt.data.keyCode) {
case 33: //PgUp
case 34: //PgDn
case 38: //UP
case 40: //DOWN
case 37: //LEFT
case 39: //RIGHT
case 32: //SPACE
case 36: //Home
case 35: //End
evt.stop();
return false;
}
return true;
}
zk.override(zul.sel.Listbox.prototype, _xlistbox, {
_doKeyDown: function (evt) { //called by listener of this widget and ItemWidget
if (_beforeChildKey(this, evt))
return true;
var row = this._focusItem || this.getSelectedItem(),
data = evt.data,
shift = data.shiftKey, ctrl = (data.ctrlKey || data.metaKey || this.overrideCtrlSelect);
if (shift && !this._multiple)
shift = false; //OK to
// F85-ZK-3507
if (this._startRow && !shift && this._multiple)
this._startRow = null;
else if (!this._startRow && shift)
this._startRow = row;
var endless = false, step, lastrow;
// for test tool when browser is webkit
if (zk.webkit && typeof data.keyCode == 'string')
data.keyCode = zk.parseInt(data.keyCode);
switch (data.keyCode) {
case 33: //PgUp
case 34: //PgDn
var pgnl = this.paging || this._paginal;
if (row && pgnl && !pgnl.isDisabled()) { // F60-ZK-715
var npg = this.getActivePage() + (data.keyCode == 33 ? -1 : 1);
// TODO: concern ctrl
if (npg > -1 && npg < this.getPageCount())
this.fire('onAcrossPage', {
page: npg,
offset: this.indexOfItem(row),
shift: !shift || !this._multiple ? 0 :
data.keyCode == 33 ? this.getPageSize() : -this.getPageSize()
});
return;
}
step = this._visibleRows();
if (step == 0)
step = this.getPageSize() || 20;
if (data.keyCode == 33)
step = -step;
break;
case 38: //UP
case 40: //DOWN
step = data.keyCode == 40 ? 1 : -1;
break;
case 32: //SPACE
if (row) {
if (this._multiple)
this._toggleSelect(row, !row.isSelected(), evt);
else
this._select(row, evt);
}
break;
case 36: //Home
case 35: //End
step = data.keyCode == 35 ? 1 : -1;
endless = true;
break;
case 37: //LEFT
if (row)
this._doLeft(row);
break;
case 39: //RIGHT
if (row)
this._doRight(row);
break;
}
if (step > 0 || (step < 0 && row)) {
if (row && shift && !row.isDisabled() && row.isSelectable()) { // Bug ZK-1715: not select item if disabled.
// F85-ZK-3507: shift + up/down: select item when moving outwards,
// and deselect item when moving inwards
this._toggleSelect(row, this._getToSelFlag(row, this._startRow, step), evt);
}
var nrow = row ? row.$n() : null;
for (;;) {
if (!nrow) { // no focused/selected item yet
var w = this.getBodyWidgetIterator().next();
if (w)
nrow = w.$n(); // F60-ZK-423: first row
else
return; // empty
} else
nrow = step > 0 ? nrow.nextSibling : nrow.previousSibling;
if (!nrow) { // F60-ZK-715: across to next/previous page if any
if (endless)
break; // ignore Home/End key
var pg = this.paging || this._paginal, pnum;
if (pg && !pg.isDisabled()) {
pnum = pg.getActivePage();
// TODO: concern ctrl
if (step > 0 ? (pnum + 1 < pg.getPageCount()) : pnum > 0) {
this.fire('onAcrossPage', {
page: pnum + (step > 0 ? 1 : 0),
offset: step > 0 ? 0 : -1,
shift: !this._multiple || !shift ? 0 : step > 0 ? -1 : 1
});
if (this.$class.shallSyncSelInView) {
this.$class.shallSyncSelInView[this.uuid] = true;
} else {
this.$class.shallSyncSelInView = {};
this.$class.shallSyncSelInView[this.uuid] = true;
}
}
}
break;
}
var r = zk.Widget.$(nrow);
if (r.$instanceof(zul.sel.Treerow))
r = r.parent;
if (!r.isDisabled() && r.isSelectable()) {
// F85-ZK-3507
if (shift) this._toggleSelect(r, endless ? this._getToSelFlag(r, this._startRow, step) : true, evt);
if (zk(nrow).isVisible()) {
// ZK-2971: save last row even when pressing shift
lastrow = r;
if (!endless) {
if (step > 0) --step;
else ++step;
if (step == 0) break;
}
}
}
}
}
if (lastrow) {
if (!shift) { // ZK-2971: already handled in the previous code block, ignore shift
if (ctrl)
this._focus(lastrow);
else
this._select(lastrow, evt);
}
this._syncFocus(lastrow);
var bar = this._scrollbar;
if (bar)
bar.scrollToElement(lastrow.$n());
else {
// 1823278: key up until selection is out of view port, then it should scroll.
zk(lastrow.$n()).scrollIntoView(this.ebody); // Bug #1823947 and #1823278
}
}
return _afterChildKey(evt);
}
});
});
]]></script>
<listbox hflex="1" checkmark="true" multiple="true" w:overrideCtrlSelect="true">
<listhead>
<listheader label="name"/>
<listheader label="gender"/>
</listhead>
<listitem>
<listcell label="Mary" />
<listcell label="FEMALE" />
</listitem>
<listitem>
<listcell label="John" />
<listcell label="MALE" />
</listitem>
<listitem>
<listcell label="Jane" />
<listcell label="FEMALE" />
</listitem>
<listitem>
<listcell label="Henry" />
<listcell label="MALE" />
</listitem>
<listfoot>
<listfooter>
<label value="This is footer1" />
</listfooter>
<listfooter>
<label value="This is footer2" />
</listfooter>
</listfoot>
</listbox>
</hlayout>
</zk>TestComposer.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 TestComposer extends GenericForwardComposer{
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
}
public void onClick$btn(Event e) throws InterruptedException{
Messagebox.show("Hi btn");
}
}