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 :

valid client side override fails

2cor3000172.69.221.8424sl0l4Oct 18, 2024 3:33:44 AMlink

valid client side override fails

1cor3000172.69.221.8324sl0l4Oct 18, 2024 3:33:59 AMlink

listbox export

22Test172.68.106.1853v9030dOct 18, 2024 2:26:21 AMlink

listbox export

21Test172.68.106.1853v9030dOct 18, 2024 2:26:17 AMlink

listbox export

20Test172.68.106.1483v9030dOct 18, 2024 2:20:08 AMlink

listbox export

19Test172.68.106.1693v9030dOct 18, 2024 2:18:12 AMlink

upload button sample

8guest172.64.236.981bqlt18Oct 17, 2024 9:14:15 AMlink

upload button sample

7guest172.64.236.991bqlt18Oct 17, 2024 9:13:43 AMlink

upload button sample

6guest172.64.236.991bqlt18Oct 17, 2024 9:13:10 AMlink

Select all checkbox and paging not working

19Test172.68.106.1493946qghOct 17, 2024 7:59:24 AMlink

Another new ZK fiddle

5guest162.158.22.1542stdj2aDec 8, 2023 7:33:45 AMlink

resources

index.zulzul<?link rel="stylesheet" type="text/css" href="main.css"?> <?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c"?> <zk> <window border="normal" title="hello"> <div apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('pkg$.TestComposer')"> <div fulfill="self.onCreate"> <div> <button zclass="notification-button notification-button-horizontal" label="delete all" onClick="@command('deleteAllNotifications')"/> <button zclass="notification-button notification-button-horizontal" label="mark all as read" onClick="@command('markAsReadAllNotifications')" /> </div> <vlayout children="@load(vm.notifications)" sclass="notificationsList"> <template name="children" var="data"> <div sclass="notificationsList-wrapper"> <div sclass="@load(c:cat('notificationsList-item-event ', data.isUnread() ? 'notificationsList-item-event-unread' : ''))"> <label value="@load(data.title))"/> <div sclass="notificationsList-icon"> <image src="@load(data.isUnread() ? 'check.jpg' : 'cross.jpg'))" onClick="@command('notificationAction', notification=data)" tooltiptext="@load(data.isUnread() ? 'Mark as read' : 'Delete'))"/> </div> </div> <div sclass="notificationsList-description"> <label multiline="true" value="@load(data.description)"/> </div> <div sclass="notificationsList-date"> <label value="@load(data.date)"/> </div> </div> </template> </vlayout> <div style="height: 56px;"> <button zclass="notification-button notification-button-vertical" label="Show All" onClick="@command('showAllNotifications')"/> <button zclass="notification-button notification-button-vertical" label="Manage All" onClick="@command('manageNotifications')"/> </div> </div> </div> </window> </zk> TestComposer.javajava import org.zkoss.bind.annotation.*; import org.zkoss.util.resource.Labels; import org.zkoss.zk.ui.*; import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.select.Selectors; import org.zkoss.zk.ui.select.annotation.VariableResolver; import org.zkoss.zk.ui.select.annotation.Wire; import org.zkoss.zk.ui.select.annotation.WireVariable; import org.zkoss.zk.ui.sys.WebAppCtrl; import org.zkoss.zkplus.spring.DelegatingVariableResolver; import org.zkoss.zul.Div; import org.zkoss.zul.Label; import org.zkoss.zul.Popup; import 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.zk.ui.*; import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.select.Selectors; import org.zkoss.zk.ui.select.annotation.VariableResolver; import java.util.*; public class TestComposer { private final List<Notification> notifications; public TestComposer() { this.notifications = new ArrayList<Notification>(); for (int i = 0; i < 20; i++) { Notification n = new Notification(); n.title = "Title " + i; n.description = "Notification " + i; n.date = new Date(); this.notifications.add(n); } } @org.zkoss.bind.annotation.AfterCompose public void afterCompose(@ContextParam(ContextType.VIEW) final Component view) { Selectors.wireComponents(view, this, false); } @Command("notificationCountChange") @NotifyChange("notifications") public void notificationCountChange() { // just for the notification } @Command("deleteAllNotifications") @NotifyChange("notifications") public void deleteAllNotifications() { } @Command("markAsReadAllNotifications") @NotifyChange("notifications") public void markAsReadAllNotifications() { } @Command("notificationAction") @NotifyChange("notifications") public void notificationAction(@BindingParam("notification") final Notification notification) { if (notification.isUnread()) { notification.setRead(); } else { this.notifications.remove(notification); } } @Command("showAllNotifications") @NotifyChange("notifications") public void showAllNotifications() { } @Command("manageNotifications") @NotifyChange("notifications") public void manageNotifications() { } public List<Notification> getNotifications() { return this.notifications; } } check.jpgunknownhttp://s3.postimg.org/5qhl58z4f/tick.jpgcross.jpgunknownhttp://s3.postimg.org/6eqfo6xu7/cross.jpgNotification.javajava import java.math.BigInteger; import java.util.*; public class Notification{ public BigInteger id; public Integer userId; public NotificationStatus status = NotificationStatus.NEW; public Date date; public String item; public String itemId; public String title; public String description; public String getDescription() { return this.description; } public String getTitle() { return this.title; } public Date getDate() { return this.date; } public void setRead() { this.status = NotificationStatus.READ; } public boolean isUnread() { return !NotificationStatus.READ.equals(this.status); } /** * Possible notification status. */ public enum NotificationStatus { NEW, READ } } main.csscss.notification-popup { /* if you change this, don't forget the width of .notification-button-horizontal */ width: 400px; } .notification-box .z-div { float: right; position: relative; left: -8px; top: -3px; } .notification-box .z-label { color: white; background-color: red; border-radius: 5px; padding: 0 5px; display: block; text-align: center; font-weight: bold; } .notification-button { padding: 5px; background: none; border: 1px solid #CCC; font-family: Arial, sans-serif; font-size: 9pt; color: #777; float: left; font-weight: bold; } .notification-button-horizontal { /* should be consistent with the width of .notification-popup */ width: 185px; } .notification-button-horizontal + .notification-button-horizontal { position: relative; left: -1px; } .notification-button-vertical { width: 100%; } .notification-button-vertical + .notification-button-vertical { position: relative; top: -1px; } .notificationsList { clear: both; height: 350px; overflow: scroll; } .notificationsList-item-event.notificationsList-item-event-unread .z-label { font-weight: bold; } .notificationsList-icon { float: right; z-index: 99; } .notificationsList-icon .z-image { width: 12px; height: 12px; cursor: pointer; } .notificationsList-wrapper { border-bottom: 1px solid #CCC; padding: 6px 2px; } .notificationsList .z-vlayout-inner:last-child .notificationsList-wrapper { border-bottom: none; }