2011-09-22 75 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列配置。这可能是问题所在。

我建议你通过上面的帖子并交叉检查你的网格实现。