Я пытаюсь узнать, как использовать сетки EXTJS для некоторых простых операций CRUD над таблицей в приложении администратора.EXTJS + Обновление магазина с идентификатором базы данных после сохранения сетки
У меня есть простая сетка, что позволяет кому-либо редактировать пользователь, магазин определяются как:
var userDataStore = new Ext.data.Store({
id: 'userDataStore',
autoSave: false,
batch: true,
proxy: new Ext.data.HttpProxy({
api: {
read: '/Admin/Users/All',
create: '/Admin/Users/Save',
update: '/Admin/Users/Save'
}
}),
reader: new Ext.data.JsonReader(
{
root: 'Data',
idProperty: 'ID',
totalProperty: 'total',
successProperty: 'success',
messageProperty: 'message'
}, [
{ name: 'ID', type: 'string', allowBlanks: false },
{ name: 'NT_ID', type: 'string', allowBlank: false },
{ name: 'EMail', type: 'string', allowBlank: false },
{ name: 'Name', type: 'string', allowBlank: false },
{ name: 'Enabled', type: 'bool', allowBlank: false },
{ name: 'CurrentRoleCode', type: 'string', allowBlank: false}]
),
writer: new Ext.data.JsonWriter(
{
encode: false,
writeAllFields: true,
listful: true
})
});
Это связан с сеткой, и я могу загрузить и сохранить пользователь без проблем. Кнопка сохранения выглядит следующим образом:
var saveButton = new Ext.Button({
text: 'Save',
disabled: true,
handler: function() {
userDataStore.save();
pageState.ClearDirty();
saveButton.disable();
}
});
Однако при создании нового пользователя, JSON POST для пользователя размещается в том же REST службы конечной точки, как «Update», с той лишь разницей, что нет ID (как указано в хранилище при загрузке с сервера).
Это работает, и я могу создать пользователей.
Служба сохранения REST возвращает созданную строку с новым идентификатором базы данных, и я был в предположении, что EXTJS автоматически привяжет новый сгенерированный идентификатор базы данных к строке. Это позволяет пользователю дополнительно редактировать эту строку и вызывать обновление вместо вставки.
Вместо этого строка продолжает иметь пустой идентификатор пользователя, поэтому дополнительное сохранение создает другого нового пользователя.
Так как:
- ExtJS предполагается разрешить генерироваться ряд идентификаторов автоматически, и я просто делаю что-то неправильно.
- Я должен вручную перезагрузить сетку после каждого сохранения с помощью дополнительного вызова REST.
Я смотрел документацию и форумы EXTJS, но я не знаю, как правильно подойти.
Может кто-нибудь уточнить?
EDIT: Я попытался вернуть Success = True в JSON, чтобы соответствовать SuccessProperty, однако это все еще не работает.
EDIT # 2: Пока что единственное, что я нашел, что работает, это «userDataStore.reload()» после сохранения, однако, поскольку я возвращал содержимое хранилища после сохранения, я надеялся, что EXTJS будет понимать это и обновлять значения строк.