2012-06-12 22 views
1

我想单击提交按钮时更新列表框。列表框最初由一个JSONObject列表组成,在点击提交按钮之后,列表元素发生了变化,列表框应该随更新而更新,但是我不能这样做。你能帮我补充一下列表框吗?更新“简单”列表框ZK

我这是怎么放的JSONObject的名单列表框中

<listbox id="userListbox"> 
<listhead> 
    <listheader label="Id"></listheader> 
    <listheader label="Name"></listheader> 
    <listheader label="Address"></listheader> 
    <listheader label="Phone"></listheader> 
</listhead> 
<listitem forEach="${userController.list}"> 
    <listcell label="${each.id}" ></listcell> 
    <listcell label="${each.name}" ></listcell> 
    <listcell label="${each.address}" ></listcell> 
    <listcell label="${each.phone}" ></listcell> 
</listitem> 

类UserController中:

private List<JSONObject> list; 

@Listen("onClick = #submitButton") 
public void onSubmit(Event event) { 
    loadUser(); 
} 

private void loadUser() { 
    JSONObject input = new JSONObject(); 
    input.put("name", nameBox.getText()); 

    list = getUserList(input); 
} 

public List<JSONObject> getList() { 
    return list; 
} 

public void setList(List<JSONObject> list) { 
    this.list = list; 
} 

,我不知道如何更新列表框?感谢您的帮助。

回答

1

类UserController中:

private List<JSONObject> list; 
Listbox userListbox; 
@Listen("onClick = #submitButton") 
public void onSubmit(Event event) { 
    loadUser(); 
} 

private void loadUser() { 
    JSONObject input = new JSONObject(); 
    input.put("name", nameBox.getText()); 

    list = getUserList(input); 
    userListbox.setModel(list); 
    userListbox.set//Your own item renderer 
} 

public List<JSONObject> getList() { 
    return list; 
} 

public void setList(List<JSONObject> list) { 
    this.list = list; 
} 

,我不知道如何更新列表框?感谢您的帮助。

+0

感谢您的帮助。由于我是ZK的新手,我应该创建类渲染器吗?在第一个代码(.zul文件)中,我只需放入列表并在没有任何渲染器的情况下在JSONObject中调用每个键。我必须创建类渲染器来更新列表框吗? – Eaton

+0

是的,你应该创建一个实现ListitemRenderer的类Renderer,并且当你的列表(数据)发生变化时,你只需要执行listbox.setModel(),就可以重写方法getListitem(),setRenderer。 – 2012-06-12 08:30:04