2014-02-04 4 views
0

У меня есть вопрос относительно 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")); 
       } 
      }); 

ответ

0

Там нет ничего о отбрасывая изменений во invalidateCache в документации: http://www.smartclient.com/docs/9.0/a/b/c/go.html#method..ListGrid.invalidateCache кэш Invalidate вымывает кэшированные данные при загрузке с сервера. Вы должны отказаться от изменений вручную с помощью метода discardAllEdits: http://www.smartclient.com/docs/9.0/a/b/c/go.html#method..ListGrid.discardAllEdits

Смежные вопросы