2011-09-22 52 views
3

我有一個字段DTO對象:如何使用GXT Grid?

public class EmpDTO extends BaseModel implements java.io.Serializable { 
    private short empno; 
    private EmpDTO emp; 
    private DeptDTO dept; 
    private String ename; 
    private String job; 

我試圖輸出這個類在網格:

List<ColumnConfig> configs = new ArrayList<ColumnConfig>(); 
ColumnConfig clmncnfgEname = new ColumnConfig("ename", "ename", 150); 
configs.add(clmncnfgEname); 
ListStore<EmpDTO> store = new ListStore<EmpDTO>(); 
EmpDTO empDTOtmp = new EmpDTO(); 
empDTOtmp.setEname("Name"); 
store.add(empDTOtmp); 
Grid<EmpDTO> grid = new Grid<EmpDTO>(store, new ColumnModel(configs)); 
mainContentPanel.add(grid); 

但我看到了錯誤空網格。如何解決這個問題?

回答

1

您是否必須使用BaseModel?爲什麼不實施BeanModelTag而不是擴展BaseModel?

public class EmpDTO implements BeanModelTag { 

否則確保setEname看起來是這樣的:

public void setEname(String ename) { 
    set("ename",ename); 
} 

而且getEname看起來是這樣的:

public String getEname() { 
    return (String)get("ename"); 
} 
+0

是的,我使用BaseModel和實現Serializable。我的getter和setter看起來像這樣: \t public String getEname(){ \t \t return this.ename; \t} \t公共無效setEname(字符串ENAME){ \t \t this.ename = ENAME; \t} – Selector

+0

而如果我實現BeanModelTag ListStore不能接受這個。 – Selector

+0

你將不得不修改你的getter&setter。如果您將此作爲baseModel使用,則需要執行這些調用來設置字符串屬性。 請看這裏:[http://www.sencha.com/forum/showthread.php?65999-How-to-use-BaseModel-and-BaseModelData](http://www.sencha.com/forum/showthread .PHP?65999-如何使用的,BaseModel-和BaseModelData) –

0

通過這個鏈接...我想你可能會錯過了一些關鍵步驟來設置網格。 http://zawoad.blogspot.com/2009/08/how-to-create-simple-grid-using-gxtext.html

它通過簡單的步驟顯示如何創建一個基於GXT的網格,並幫助我了很多。 我個人也曾在某些場合遇到過這個問題。確保您的DTO字段已正確映射到Grid列配置。這可能是問題所在。

我建議你通過上面的帖子並交叉檢查你的網格實現。