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 AMlinkgrid sample with frozen - patched
1guest118.233.164.353511g66Oct 11, 2016 8:25:14 AMlinkresources
index.zulzul<zk>
<script>
<![CDATA[
zk.afterLoad('zul.mesh', function() {
var xFrozen = {};
zk.override(zul.mesh.Frozen.prototype, xFrozen ,{
_doScroll: function (n) {
var p = this.parent, num;
if (p._nativebar)
num = Math.ceil(this.$n('scrollX').scrollLeft / 50);
else
num = Math.ceil(n);
if (this._lastScale == num)
return;
var self = this;
if(this.delayedScroll) {
clearTimeout(this.delayedScroll);
}
this.delayedScroll = setTimeout(function() {
self._lastScale = num;
self._doScrollNow(num);
self.smartUpdate('start', num);
self._start = num;
self.delayedScroll = null;
}, 0);
},
_doScrollNow: function (num, force) {
var totalWidth = 0,
mesh = this.parent,
cnt = num,
rows = mesh.ebodyrows,
c = this._columns;
if (mesh.head) {
// set fixed size
var totalCols = mesh.head.nChildren,
hdrows = mesh.eheadrows.rows,
// B70-ZK-2071: Use mesh.head to get columns.
hdcells = mesh.head.$n().cells,
hdcol = mesh.ehdfaker.firstChild,
ftrows = mesh.foot ? mesh.efootrows : null,
ftcells = ftrows ? ftrows.rows[0].cells : null;
for (var faker, i = 0; hdcol && i < totalCols; hdcol = hdcol.nextSibling, i++) {
if (hdcol.style.width.indexOf('px') == -1) {
var sw = hdcol.style.width = jq.px0(hdcells[i].offsetWidth),
wgt = zk.Widget.$(hdcol);
if (!wgt.$instanceof(zul.mesh.HeadWidget)) {
if ((faker = wgt.$n('bdfaker')))
faker.style.width = sw;
if ((faker = wgt.$n('ftfaker')))
faker.style.width = sw;
}
}
}
var updateBatch = [];
// B70-ZK-2071: Use mesh.head to get column.
for (var i = c, faker; i < totalCols; i++) {
var n = hdcells[i],
hdWgt = zk.Widget.$(n),
isVisible = hdWgt && hdWgt.isVisible(),
shallUpdate = false,
cellWidth;
//ZK-2776, once a column is hidden, there is an additional style
var style = n.style;
if (style.visibility == 'hidden' || style.display == 'none' /*just in case*/)
continue; //skip column which is hide
if (cnt-- <= 0) { //show
var wd = isVisible ?
(zk.ie ? Math.max(jq(n).width(), 0) : n.offsetWidth) // Bug ZK-2690
: 0,
nativebar = mesh._nativebar;
// ZK-2071: nativebar behavior should be same as fakebar
if (force || (wd < 1)) {
cellWidth = hdWgt._origWd || jq.px(wd);
// ZK-2772: consider faker's width first for layout consistent
// if the column is visible.
if ((wd > 1) && (faker = jq('#' + n.id + '-hdfaker')[0]) && faker.style.width)
cellWidth = faker.style.width;
hdWgt._origWd = null;
shallUpdate = true;
}
} else if (force ||
// Bug ZK-2690
((zk.ie ? Math.max(jq(n).width(), 0) : n.offsetWidth) != 0)) { //hide
faker = jq('#' + n.id + '-hdfaker')[0];
//ZK-2776: consider faker's width first for layout consistent
if (faker.style.width && zk.parseInt(faker.style.width) > 1)
hdWgt._origWd = faker.style.width;
cellWidth = '0px';
shallUpdate = true;
}
// ZK-2101: should give 0.1px for chrome and safari
if ((zk.chrome || zk.safari) && cellWidth && (parseInt(cellWidth) == 0))
cellWidth = '0.1px';
if (force || shallUpdate) {
updateBatch.push({node: n, index: i, width: cellWidth});
}
}
jq(mesh).hide();
updateBatch.forEach(function(update) {
var n = update.node;
var cellWidth = update.width;
var i = update.index;
if ((faker = jq('#' + n.id + '-hdfaker')[0]))
faker.style.width = cellWidth;
if ((faker = jq('#' + n.id + '-bdfaker')[0]) && isVisible)
faker.style.width = cellWidth;
if ((faker = jq('#' + n.id + '-ftfaker')[0]))
faker.style.width = cellWidth;
// ZK-2071: display causes wrong in colspan case
// var cw = zk.parseInt(cellWidth),
// hidden = cw == 0;
//
// if (mesh._nativebar && (!hdWgt._hflex || hdWgt._hflex == 'min')) {
// mesh.ehdfaker.childNodes[i].style.display = hidden ? 'none' : '';
// hdcells[i].style.display = hidden ? 'none' : '';
// }
hdcells[i].style.width = cellWidth;
// foot
if (ftcells) {
// ZK-2071: display causes wrong in colspan case
//
// if (mesh._nativebar) {
// mesh.eftfaker.childNodes[i].style.display = hidden ? 'none' : '';
// ftcells[i].style.display = hidden ? 'none' : '';
// }
if (ftcells.length > i)
ftcells[i].style.width = cellWidth;
}
});
hdcol = mesh.ehdfaker.firstChild;
for (var i = 0; hdcol && i < totalCols; hdcol = hdcol.nextSibling, i++) {
if (hdcol.style.display != 'none')
totalWidth += zk.parseInt(hdcol.style.width);
}
jq(mesh).show();
}
// Set style width to table to avoid colgroup width not working
// because of width attribute (width="100%") on table
var headtbl, bodytbl, foottbl;
if (headtbl = mesh.eheadtbl)
headtbl.style.width = jq.px(totalWidth);
if (bodytbl = mesh.ebodytbl)
bodytbl.style.width = jq.px(totalWidth);
if (foottbl = mesh.efoottbl)
foottbl.style.width = jq.px(totalWidth);
mesh._restoreFocus();
// Bug ZK-601, Bug ZK-1572
if (zk.ie8_) {
zk(mesh).redoCSS();
} else if (zk.ie9_) {
var n = mesh.$n();
n.className += ' ';
if (n.offsetHeight);
n.className.trim();
}
}
});//zk.override
});//zk/afterLoad
]]>
</script>
<window id="myWindow" apply="pkg$.TestComposer">
<grid id="inboxGrid" height="350px"
rowRenderer="pkg$.MyRowRenderer" sclass="testHidden"
emptyMessage="Nothing in Inbox." width="600px" >
<frozen columns="2" start="0" />
<columns>
<column width="150px" label="Test1" sort="auto(data1)" />
<column width="140px" label="Test2" sort="auto(data2)" />
<column width="130px" label="Test3" sort="auto(data3)" />
<column width="120px" label="Test4" sort="auto(data4)" />
<column width="110px" label="Test5" sort="auto(data5)" />
<column width="100px" label="Test6" sort="auto(data6)" />
<column width="110px" label="Test7" sort="auto(data7)" />
<column width="120px" label="Test8" sort="auto(data8)" />
<column width="130px" label="Test9" sort="auto(data9)" />
<column width="140px" label="Test10" sort="auto(data10)" />
</columns>
</grid>
</window>
</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.*;
import java.util.*;
public class TestComposer extends GenericForwardComposer{
private Grid inboxGrid;
private Window myWindow;
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
ListModelList model = new ListModelList(getData());
inboxGrid.setModel(model);
inboxGrid.setMold("paging");
//even with page size of 10 it's jumping.
//inboxGrid.setPageSize(10);
inboxGrid.setPageSize(model.getSize());
myWindow.doModal();
}
private List<Data> getData(){
List<Data> list= new ArrayList<Data>();
for (int i=0; i < 100; i++) {
list.add(new Data(i));
}
return list;
}
public class Data {
private String data1;
private String data2;
private String data3;
private String data4;
private String data5;
private String data6;
private String data7;
private String data8;
private String data9;
private String data10;
public Data(int i) {
this.data1 = "Test1-" + i;
this.data2 = "Test2-" + i;
this.data3 = "Test3-" + i;
this.data4 = "Test4-" + i;
this.data5 = "Test5-" + i;
this.data6 = "Test6-" + i;
this.data7 = "Test7-" + i;
this.data8 = "Test8-" + i;
this.data9 = "Test9-" + i;
this.data10 = "Test10-" + i;
}
public String getData1() {
return data1;
}
public String getData2() {
return data2;
}
public String getData3() {
return data3;
}
public String getData4() {
return data4;
}
public String getData5() {
return data5;
}
public String getData6() {
return data6;
}
public String getData7() {
return data7;
}
public String getData8() {
return data8;
}
public String getData9() {
return data9;
}
public String getData10() {
return data10;
}
}
}
MyRowRenderer.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 pkg$.TestComposer.Data;
public class MyRowRenderer implements RowRenderer {
public void render(final Row row, final java.lang.Object rowData, int index) {
Data data = (Data) rowData;
row.appendChild(new Label(data.getData1()));
row.appendChild(new Label(data.getData2()));
row.appendChild(new Label(data.getData3()));
row.appendChild(new Label(data.getData4()));
row.appendChild(new Label(data.getData5()));
row.appendChild(new Label(data.getData6()));
row.appendChild(new Label(data.getData7()));
row.appendChild(new Label(data.getData8()));
row.appendChild(new Label(data.getData9()));
row.appendChild(new Label(data.getData10()));
}
}