-
FEATURED COMPONENTS
First time here? Check out the FAQ!
Hi All,
I have just updated from 5.0.9 to 5.0.10 and I have noticed that the ListBox looks broken, I have tested it both in IE 8 and FireFox 9.
The scroll bars are now missing and the paging is also gone. When running on 5.0.8/5.0.9 the paging and the scroll bars work fine.
Our Zul:
<fwlistbox id="list" model="@{results}" multiple="true" checkmark="true" width="100%" height="100%">
And Java:
public class FWListbox extends Listbox { public FWListbox( ) { setMold("paging"); setPagingPosition("bottom"); setPageSize(20); setVflex(true); getPagingChild().setMold("os"); setSizedByContent(true); setSpan(true); addEventListener(Events.ON_SELECT, new EventListener() { public void onEvent( Event event ) throws Exception { DataArrayModel<?> model = getDataArrayModel(); if (model != null) { model.setSelectedListitems(getSelectedItems()); } } }); addEventListener(Events.ON_CHANGE, new EventListener() { public void onEvent( Event event ) throws Exception { Event ev = event; while (ev instanceof ForwardEvent) ev = ((ForwardEvent)ev).getOrigin(); DataArrayModel<?> model = getDataArrayModel(); if (model != null) { Component c = ev.getTarget(); while (!(c instanceof Listitem)) c = c.getParent(); if (c instanceof Listitem) model.addDirtyListitem((Listitem)c); } } }); }
Is this a new bug in ZK?
Hi,
I try to simulate your case but I can't see the same issue. Do you have simpler case to reproduce the issue?
Here is the source and demo I made:
package j3imkpfl$v5;
import java.util.LinkedList;
import java.util.List;import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zk.ui.event.ForwardEvent;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listitem;public class FWListbox extends Listbox
{
public FWListbox( )
{
setMold("paging");
setPagingPosition("bottom");
setPageSize(20);
setVflex(true);
getPagingChild().setMold("os");
setSizedByContent(true);
setSpan(true);
addEventListener(Events.ON_SELECT, new EventListener()
{
public void onEvent( Event event ) throws Exception
{
// DataArrayModel<?> model = getDataArrayModel();
List<String> model =new LinkedList<String>();if (model != null)
{
// model.setSelectedListitems(getSelectedItems());
}
}
});addEventListener(Events.ON_CHANGE, new EventListener()
{
public void onEvent( Event event ) throws Exception
{
Event ev = event;
while (ev instanceof ForwardEvent)
ev = ((ForwardEvent)ev).getOrigin();
// DataArrayModel<?> model = getDataArrayModel();
List<String> model =new LinkedList<String>();
if (model != null)
{
Component c = ev.getTarget();
while (!(c instanceof Listitem))
c = c.getParent();
// if (c instanceof Listitem)
// model.addDirtyListitem((Listitem)c);
}
}
});
}
}
package j3imkpfl$v5;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.*;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");
}
}
<?page title="new page title" contentType="text/html;charset=UTF-8"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit"?>
<zk>
<zscript><![CDATA[
String[] data = new String[100];
for (int i=0 ; i<100 ; i++){
data[i] = Integer.toString(i);
}
List results = Arrays.asList(data);
]]></zscript>
<listbox model="@{results}" use="j3imkpfl$v5.FWListbox" multiple="true" checkmark="true" width="100%" height="100%">
<listhead sizable="true">
<listheader>test</listheader>
</listhead>
<listitem self="@{each=d}">
<listcell label="@{d}" />
</listitem>
</listbox>
</zk>
Here is a reproducible symptom: http://www.zkoss.org/forum/listComment/18404-scrolling-listbox-in-bandbox-breaks-in-5-0-10
I've altered your example hawk:
package j3imkpfl$v7;
import java.util.LinkedList;
import java.util.List;import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zk.ui.event.ForwardEvent;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listitem;public class FWListbox extends Listbox
{
public FWListbox( )
{
setMold("paging");
setPagingPosition("bottom");
setPageSize(20);
setVflex(true);
getPagingChild().setMold("os");
setSizedByContent(true);
setSpan(true);
addEventListener(Events.ON_SELECT, new EventListener()
{
public void onEvent( Event event ) throws Exception
{
// DataArrayModel<?> model = getDataArrayModel();
List<String> model =new LinkedList<String>();if (model != null)
{
// model.setSelectedListitems(getSelectedItems());
}
}
});addEventListener(Events.ON_CHANGE, new EventListener()
{
public void onEvent( Event event ) throws Exception
{
Event ev = event;
while (ev instanceof ForwardEvent)
ev = ((ForwardEvent)ev).getOrigin();
// DataArrayModel<?> model = getDataArrayModel();
List<String> model =new LinkedList<String>();
if (model != null)
{
Component c = ev.getTarget();
while (!(c instanceof Listitem))
c = c.getParent();
// if (c instanceof Listitem)
// model.addDirtyListitem((Listitem)c);
}
}
});
}
}
package j3imkpfl$v7;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.*;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");
}
}
<?page title="new page title" contentType="text/html;charset=UTF-8"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit"?>
<zk><zscript><![CDATA[
String[] data = new String[100];
for (int i=0 ; i<100 ; i++){
data[i] = Integer.toString(i);
}
List results = Arrays.asList(data);
]]>
</zscript>
<borderlayout>
<north title="Criteria" >
<grid>
<rows>
<row>
<label value="test" />
<label value="test" />
</row>
<row>
<label value="test" />
<label value="test" />
</row>
<row>
<label value="test" />
<label value="test" />
</row>
<row>
<label value="test" />
<label value="test" />
</row>
</rows>
</grid>
</north>
<center title="Results">
<borderlayout>
<center>
<listbox model="@{results}" use="j3imkpfl$v7.FWListbox" multiple="true" checkmark="true" width="100%" height="100%">
<listhead sizable="true">
<listheader>test</listheader>
</listhead>
<listitem self="@{each=d}">
<listcell label="@{d}" />
</listitem>
</listbox>
</center>
</borderlayout>
</center>
<south>
<borderlayout>
<west>
<hbox>
<label value="buton" />
</hbox>
</west>
</borderlayout>
</south>
</borderlayout></zk>
When you run this under ZK 5.0.9 it works fine, but when you run it in 5.0.10 you can see the error.
(BTW ZK Fiddle is cool!!)
Reported bug: http://tracker.zkoss.org/browse/ZK-773
A quick work around, add the fragment below into zul page:
<style> .z-center-body { overflow: auto !important; } </style>
Regards,
ben
In this case,
remove the 'height="100%"' and 'setVflex(true)' if you want it sized by content,
then it works well with the work-around above.
The height/vflex are conflict with sizedByContent, it means fixed height, not sized by content.
This actually will cause unexpected result in any version,
and maybe show the expected result in some version with luck.
Regards,
ben
Asked: 2012-01-11 03:40:59 +0800
Seen: 613 times
Last updated: Jan 14 '12