我刚刚开始使用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而没有成功。