2011-05-05 51 views
1

我剛剛開始使用Sencha的Ext GWT,並且我碰到了一堵牆。我將他們的JSON加載的網格和他們的可編輯網格的方法結合起來。作爲測試數據集我使用的星際之門亞特蘭蒂斯插曲因此SGAEpisode其定義爲列表:Sencha:迭代自定義BaseModel子類的列表商店

public class SGAEpisode extends BaseModel { 
    public SGAEpisode() { 

    } 

    public SGAEpisode(String season, String episode) { 
    set("season",season); 
    set("episode",episode); 
    } 

    public void setSeason(String season) { 
    set("season",season); 
    } 

    public String getSeason(){ 
    return get("season"); 
    } 

    public void setEpisode(String name) { 
    set("episode",name); 
    } 

    public String getEpisode() { 
    return get("episode"); 
    } 

    public String toString() { 
    return "Season: " + get("season") + " episode: " + get("episode"); 
    } 
} 

的onModuleLoad()開始了與...

ModelType type = new ModelType(); 
type.setRoot("seasons"); 
type.addField("Season","season"); 
type.addField("Episode","episode"); 

String path = GWT.getHostPageBaseURL() + "senchaapp/sgaepisodes"; 

final RequestBuilder builder = new RequestBuilder(RequestBuilder.GET,path); 
final MVProxy<String> proxy = new SProxy<String>(builder); 

JsonLoadResultReader<ListLoadResult<SGAEpisode>> reader = new JsonLoadResultReader<ListLoadResult<SGAEpisode>>(type); 
final BaseListLoader<ListLoadResult<SGAEpisode>> loader = new BaseListLoader<ListLoadResult<SGAEpisode>>(proxy,reader); 

final ListStore<SGAEpisode> episodes = new ListStore<SGAEpisode>(loader); 

這樣裝載機。 load()效果很好,填充網格,我可以編輯字段,但是我沒有看到commitChanges()做任何事情,我也無法遍歷ListStore的「劇集」來收集更改或添加的值。哦,SProxy只是一個DataProxy子類,允許我指定我正在加載到網格中的季節JSON。

如果我嘗試要麼

for(SGAEpisode episode : episodes) { 
    save(episode); 
} 

for(int i = 0; i < episodes.getCount(); i++) { 
    save(episodes.getAt(i)); 
} 

我得到消息「com.extjs.gxt.ui.client.data.BaseModel不能轉換爲COM異常。 mvsc.sencha.shared.SGAEpisode「任何想法我做錯了什麼?一切都到這一點,定義/填充SGAEpisodes .....

附錄 好了,如果我嘗試

List<Record> modified = episodes.getModifiedRecords(); 

for(Record r : modified) { 
    ModelData md = r.getModel(); 
    save(md.get("season"),md.get("episode")); 
} 

我可以遍歷,並得到修改後的值,但有什麼如果我必須像這樣使用基類,那麼可以使用ModelData子類。這讓我覺得我其實不需要幫助?

附錄2我試過子類化BaseModelData而沒有成功。

回答

0

我知道它的舊帖子,我有同樣的問題。這是我如何修復它。 嘗試迭代listStore中的模型。

for(SGAEpisode episode : episodes.getModels()) { 
    save(episode); 
}