-
FEATURED COMPONENTS
First time here? Check out the FAQ!
如题:动态获取带有checkbox的列表时,发现点着点着,之前已经选中的都变成不选中了,而且还有偶尔出现只能单选,而不能多选的情况,不知哪位高手可以帮忙解决下?
页面ZUL代码如下:
<?page title="new page title" contentType="text/html;charset=UTF-8"?>
<zk>
<window apply="com.window.testCheckboxWindow">
<listbox id="box" width="250px" rows="20" fixedLayout="true"
multiple="true" checkmark="true">
<listhead>
<listheader label="Name"/>
</listhead>
</listbox>
</window>
</zk>
JAVA代码如下:
package com.window;
import java.util.ArrayList;
import java.util.List;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.SimpleListModel;
public class testCheckboxWindow extends GenericForwardComposer {
private Listbox box;
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
List list = new ArrayList();
for (int i = 0; i < 1000; i++) {
list.add("hello" + i);
}
SimpleListModel simpleListModel = new SimpleListModel(list);
box.setModel(simpleListModel);
}
}
點選checkbox的時候只能點擊checkbox的框,而不能點擊listitem的其他部份,否則會取消之前的選擇改為選中當前item。
不知道是否因為這個原因而產生你的問題。
這個問題之前有朋友提出過。其實這個動作應該是符合國際規格的。比如說我們常用的網絡郵箱的相應功能等等。
如果一定要實現在listitem任何一個地方點擊都可以選中checkbox的話,可以給每一個listcell添加onClick事件監聽來實現。
除了给每一个listcell添加onClick事件监听来实现外,没有别的办法了吗?
从我的代码角度来看,我是动态获取的,页面中都没有用到listcell,那又该如何实现呢?
<listbox id="box" width="250px" rows="20" fixedLayout="true"
multiple="true" checkmark="true">
<listhead>
<listheader label="Name"/>
</listhead>
</listbox>
測試學習階段當然可以如你所用的方法來構造Listbox,真正開髮時當然會使用更嚴密的方式了。
另外,要做到你想要的功能,就必須使用另外的方式構建Listbox。
PS:貌似Listitem也可以添加onClick事件來監聽的,但無論如何都要改變構造Listbox的方式。
其實box.setModel(simpleListModel)這種方法是調用了ZK中有個Render方法。
你可以通過在java類中繼承ListitemRenderer接口來重寫這個方法,具體寫法資料ZK的small talk裏面有相關文章介紹。剛才我找了下,一時也沒找到……我暫且把我的代碼發給你參考下吧:
public class MyClass extends GenericForwardComposer implements ListitemRenderer { …… public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); …… ListModel listModel = new SimpleListModel(list); listbox.setModel(listModel); } …… public void render(Listitem item, Object data) throws Exception { MyBean bean = (MyBean) data; new Listcell("name").setParent(item); new Listcell("password").setParent(item); } }
論壇上不方便講,給你郵件吧,郵箱給我
Asked: 2009-10-10 02:48:03 +0800
Seen: 1,123 times
Last updated: Jun 15 '18