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 :

Object hashcode different with ZK form binding

2YannUnil172.69.108.13540rj0kApr 19, 2024 1:18:08 PMlink

Object hashcode different with ZK form binding

1YannUnil172.69.108.13040rj0kApr 19, 2024 1:04:31 PMlink

font awesome effects

1guest172.71.166.21232nla3hApr 18, 2024 6:04:43 PMlink

font awesome effects

245guest172.71.166.21220t2jmoApr 18, 2024 6:04:41 PMlink

ZK-5696

1JamesChu162.158.187.3739iuvhmApr 18, 2024 10:33:52 AMlink

Listbox colspan header version 2

3guest172.71.183.199jkpp6qApr 17, 2024 1:54:19 PMlink

ZK-5695

1guest162.158.90.1402is2rctApr 17, 2024 10:23:20 AMlink

LocalDate in datebox

2guest172.70.243.516v49n7Apr 17, 2024 6:05:17 AMlink

LocalDate in datebox

1guest172.70.243.516v49n7Apr 17, 2024 6:04:18 AMlink

LocalDate in datebox

1guest172.70.243.511m6i0gcApr 17, 2024 6:04:04 AMlink

Performance problem with TreeDataEvent.INTERVAL_REMOVED

6guest217.68.33.1402h2q4u2Oct 5, 2015 11:05:34 AMlink

resources

index.zulzul<zk> <window border="normal" title="hello" apply="pkg$.TestComposer"> <div>This demonstrates a performance problem in IE with the fireEvent method in TreeModel to remove many tree items. Tested with IE11. Chrome has no problems at all. Invalidating the tree after changing the model and firing the events fixes the performance problem, but should that really be necessary? And if so, how come it works just fine without it in Chrome? </div> <button id="btnRemove" label="Remove a bunch of tree items" /> <tree id="tree" height="200px" width="200px"/> </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{ Tree tree; public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); tree = (Tree)comp.getFellow("tree"); tree.setItemRenderer(new TreeitemRenderer() { public void render(Treeitem item, Object data, int index) { Treerow treerow = new Treerow(); treerow.setParent(item); Treecell treecell = new Treecell(); treecell.setParent(treerow); treecell.appendChild(new Label((String)((TestNode)data).getLabel())); } }); List<TestNode> list = new ArrayList<TestNode>(); for( int i=0; i<1500; ++i) { list.add(new TestNode("" +i)); } TestNode node = new TestNode("main",list); TestTreeModel model = new TestTreeModel(node); tree.setModel(model); } public void onClick$btnRemove(Event e) throws InterruptedException{ // Remove a bunch of nodes from the model and fire a TreeDataEvent.INTERVAL_REMOVED for each // ((TestTreeModel)tree.getModel()).remove(); // Invalidating the tree solves the problem, but should this really be needed? // Seems that Chrome is just fine without it, so why is it needed in IE11? // // tree.invalidate(); } } TestTreeModel.javajava import org.zkoss.zul.*; import org.zkoss.zul.event.*; public class TestTreeModel extends AbstractTreeModel{ public TestTreeModel(TestNode root) { super(root); } public void remove() { // I know that it would be better to fire one event here with different from and to index. // This is just to point out the problem // for( int i=0; i<1490; ++i) { ((TestNode)getRoot()).getChildren().remove(0); this.fireEvent(getRoot(), 0, 0, TreeDataEvent.INTERVAL_REMOVED); } } @Override public Object getChild(final Object parentObject, final int index) { TestNode node = (TestNode)parentObject; return node.getChildren().get(index); } @Override public int getChildCount(final Object parentObject) { return ((TestNode)parentObject).getChildren().size(); } @Override public boolean isLeaf(final Object parentObject) { return getChildCount(parentObject) == 0; } @Override public int getIndexOfChild(Object parent, Object child) { TestNode node = (TestNode)parent; return node.getChildren().indexOf((TestNode)child); } } TestNode.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 TestNode { List<TestNode> children; String label; public TestNode(String label) { this(label, new ArrayList<TestNode>()); } public TestNode(String label, List<TestNode> children) { this.label = label; this.children = children; } public String getLabel() { return label; } public List<TestNode> getChildren() { return children; } }