Я пытаюсь узнать, как использовать сетки EXTJS для некоторых простых операций CRUD над таблицей в приложении администратора.
У меня есть простая сетка, которая позволяет кому-то редактировать пользователей, магазин определяется как:
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, что и «Обновление», с той лишь разницей, что значение ID не публикуется (так как оно устанавливается только в хранить при загрузке с сервера).
Это работает, и я могу создавать пользователей.
Служба сохранения REST отправляет обратно созданную строку с новым идентификатором базы данных, и я предполагал, что EXTJS автоматически свяжет новый сгенерированный идентификатор базы данных со строкой. Это позволяет пользователю дополнительно редактировать эту строку и вызывать обновление вместо вставки.
Вместо этого строка продолжает иметь пустой идентификатор пользователя, поэтому при дополнительном сохранении создается еще один новый пользователь.
Так что либо:
- EXTJS должен разрешать сгенерированные идентификаторы строк автоматически, а я просто делаю что-то не так.
- Я должен вручную перезагружать сетку после каждого сохранения дополнительным вызовом REST.
Я просматривал документацию и форумы EXTJS, но мне неясно, какой подход правильный.
Может кто-нибудь уточнить?
РЕДАКТИРОВАТЬ: я пытался вернуть Success = True в JSON, чтобы соответствовать SuccessProperty, однако это все еще не работает.
РЕДАКТИРОВАТЬ # 2: Пока единственное, что я обнаружил, что работает, это делать "userDataStore.reload ()" после сохранения, однако, поскольку я возвращал содержимое хранилища обратно после сохранения, я надеялся, что EXTJS сделает понять это и обновить значения строк.