From dbe819c58b177516e8f28dc6ba1f44c1e61b34db Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Thu, 8 Apr 2010 03:00:51 +0000 Subject: [PATCH] WListbox.setData will not re-render the list box header after the first call, i.e if your subsequent call to WListbox.setData doesn't have the same number of columns, the content and header will not be in sync. Link to SF Tracker: http://sourceforge.net/support/tracker.php?aid=2983597 --- .../src/org/adempiere/webui/component/WListbox.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/component/WListbox.java b/zkwebui/WEB-INF/src/org/adempiere/webui/component/WListbox.java index ce15dea0be..4da9bf46ef 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/component/WListbox.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/component/WListbox.java @@ -118,6 +118,14 @@ public class WListbox extends Listbox implements IMiniTable, TableValueChangeLis { getModel().setNoColumns(columnNames.size()); this.setItemRenderer(rowRenderer); + + //recreate listhead if needed + ListHead head = super.getListHead(); + if (head != null) + { + head.getChildren().clear(); + rowRenderer.renderListHead(head); + } } // re-render @@ -157,8 +165,7 @@ public class WListbox extends Listbox implements IMiniTable, TableValueChangeLis head = new ListHead(); - // recreate the list head - // TODO use reflection to check whether ItemRenderer is able to render ListHead + // render list head if (this.getItemRenderer() instanceof WListItemRenderer) { ((WListItemRenderer)this.getItemRenderer()).renderListHead(head);