1
A
回答
1
這是一個比較典型的例子。 最重要的整個代碼是這樣的:
BindUtils.postNotifyChange(null, null, person, "childs");
首先簡單的POJO類:
package be.chillworld;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author chillworld
*/
public class Person {
private int id;
private String naam;
private List<Person> childs = new ArrayList<Person>();
public Person(int id) {
this.id = id;
naam = "test " + id;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public void setNaam(String naam) {
this.naam = naam;
}
public String getNaam() {
System.out.println("asked getter (naam) of "+ id);
return naam;
}
public List<Person> getChilds() {
System.out.println("asked getter (childs) of "+ id);
return childs;
}
public void setChilds(List<Person> childs) {
this.childs = childs;
}
public boolean addChild(Person person) {
return childs.add(person);
}
@Override
public String toString() {
return "Person{" + "id=" + id + ", name=" + getNaam() + '}';
}
}
那麼IndexVM:
package be.chillworld;
import java.util.ArrayList;
import java.util.List;
import org.zkoss.bind.BindUtils;
import org.zkoss.bind.annotation.BindingParam;
import org.zkoss.bind.annotation.Command;
/**
*
* @author chillworld
*/
public class IndexVm {
private List<Person> persons;
int i;
public IndexVm() {
System.out.println("starting creating list");
persons = new ArrayList<Person>();
for (i = 0; i < 100; i++) {
Person person = new Person(i);
person.addChild(new Person(++i));
persons.add(person);
}
System.out.println("ending creating list");
}
public List<Person> getPersons() {
return persons;
}
public void setPersons(List<Person> persons) {
this.persons = persons;
}
@Command
public void showIndex(@BindingParam("person") Person person) {
System.out.println("changed name");
person.setNaam("Chillworld");
BindUtils.postNotifyChange(null, null, person, "naam");
}
@Command
public void addChild(@BindingParam("person") Person person) {
System.out.println("add child");
Person child = new Person(++i);
child.setNaam("new child");
person.addChild(child);
BindUtils.postNotifyChange(null, null, person, "childs");
}
}
,並在最後的index.zul:
<?xml version="1.0" encoding="UTF-8"?>
<zk xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.zkoss.org/2005/zul"
xsi:schemaLocation="http://www.zkoss.org/2005/zul
http://www.zkoss.org/2005/zul/zul.xsd">
<window border="normal" closable="false"
apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('be.chillworld.IndexVm')">
<grid width="1000px" model="@load(vm.persons)">
<columns>
<column label="naam" />
<column label="add child" />
<column label="childs" />
</columns>
<template name="model" >
<row>
<textbox value="@bind(each.naam)" />
<button onClick="@command('addChild',person = each)" label="add child"/>
<grid width="400px" model="@load(each.childs)">
<columns>
<column label="naam" />
<column label="button" />
</columns>
<template name="model" var="item">
<row>
<textbox value="@bind(item.naam)" />
<button onClick="@command('showIndex',person = item)" label="change value"/>
</row>
</template>
</grid>
</row>
</template>
</grid>
</window>
</zk>
相關問題
- 1. 更改網格在Usercontrol上的列表框內的列寬在
- 2. 搜索樹網格
- 3. 在SWT表/樹中更改行高表格/樹
- 4. 圖表列網格
- 5. 顯示樹內的網格列在extjs 4
- 6. 如何更改列表網格中的單元格顏色
- 7. XPages中的Dojox樹網格
- 8. 數據網格內的下拉列表
- 9. 造型樹列表單元格異常
- 10. 如何綁定網格視圖內列表內部列表?
- 11. 將樹附加到網格
- 12. Eclipse:XML樹或網格視圖
- 13. extjs 4網格樹拖拽
- 14. vuejs動畫列表內網格項目
- 15. 如何根據下拉列表更改Kendo網格列
- 16. Telerik MVC網格列表ExpandoObject
- 17. MYSQL產品列表網格
- 18. 列表樹typederacket
- 19. Matlab:列表樹
- 20. GWT在樹內和樹形網格之間拖放
- 21. 表的替代方案:網格列表
- 22. 帶列表和網格的引導表
- 23. 樹中的列表?
- 24. 更改列類型網格的動態
- 25. 自舉網格更改列的大小
- 26. 更改數據網格中的列
- 27. 如何將通道列表替換爲網格列表?
- 28. 更改網格的多個部分的值(字符串列表?)
- 29. 更改列表格式
- 30. 更改表格時的通知