У меня есть вопрос относительно SmartGWT ListGrid.SmartGWT ListGrid InvalidateCache не отбрасывает несохраненные изменения
Следующая Прецедент объясняет,
Существует один ComboBoxItem, который имеет несколько записей, загруженных в них. Существует ListGrid только под ComboBoxItem.
ComboItem имеет ChangeEvent (не изменено) Обработчик, который фиксирует пользовательские изменения. Также это изменение вызывает fetchData в ListGrid, который будет заполнять то же самое.
Теперь после того, как пользователь делает некоторые изменения на ListGrid и без их сохранения (setAutoSaveEdits ложно), пользователя выходит вперед и изменяет выбор в ComboBoxItem, которые на самом деле вызывает выборки операции на ListGrid то в идеале я должен получить подтверждение на отбрасывать изменения , (с кнопками ОК, SAVE CANCEL).
Однако перед ListGrid.fetchData я делаю вызов ListGrid.InvalidateCache. Этот вызов для недействительности кеша делает ListGrid не фиксирующим несохраненные изменения (, так как в нем не отображается всплывающее окно подтверждения отмены сброса) в ListGrid, что заставляет меня думать, что несохраненные изменения отбрасываются, но это не отбрасывает изменения. В следующий раз, когда я выберу одну и ту же запись, она отобразит запись с уже существующим значением редактирования.
Нельзя ли InvalidateCache в ListGrid отменить несохраненные изменения?
Ниже мой пример кода ..
ComboBoxItem fileSelectItem = new ComboBoxItem("Select Item",
"Select a Record");
fileSelectItem.setAddUnknownValues(Boolean.FALSE);
fileSelectItem.setValueField("id");
fileSelectItem.setDisplayField("description");
fileSelectItem.setRequired(true);
fileSelectItem.setWidth(600);
final ListGrid grid = new ListGrid();
fileSelectItem
.addChangeHandler(new com.smartgwt.client.widgets.form.fields.events.ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
grid.invalidateCache();
grid.fetchData(new Criteria("key", "value"));
}
});