Я только вчера начал играть с Ext GWT от Sencha, и я ударил стену.Я объединил методы из их загруженной JSON сетки и их редактируемой сетки.В качестве набора тестовых данных я использую список эпизодов Stargate Atlantis, следовательно, SGAEpisode, который определяется как:
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);
так что 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.