Estoy tratando de aprender a usar las cuadrículas EXTJS para algunas operaciones CRUD simples sobre una tabla en una aplicación de administrador.EXTJS + Actualización de una tienda con la ID de la base de datos después de guardar una cuadrícula
tengo una cuadrícula sencilla que permite a alguien para editar usuarios, la tienda se define como:
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
})
});
Esto está ligado a una red, y yo soy capaz de cargar y guardar los usuarios sin ningún problema. El botón Guardar se ve así:
var saveButton = new Ext.Button({
text: 'Save',
disabled: true,
handler: function() {
userDataStore.save();
pageState.ClearDirty();
saveButton.disable();
}
});
Sin embargo, al crear un nuevo usuario, el POST JSON para que el usuario se ha publicado en el mismo punto final de servicio REST como "Actualización", con la única diferencia de que ningún ID el valor se publica (ya que uno solo se establece en la tienda cuando se carga desde el servidor).
Esto funciona, y puedo crear usuarios.
El servicio guardar REST emite la fila creada con la nueva ID de la base de datos, y yo estaba bajo la suposición de que EXTJS vinculará automáticamente la nueva ID de la base de datos generada a la fila. Esto le permite al usuario editar más esa fila y causar una actualización en lugar de una inserción.
En su lugar, la fila sigue teniendo un ID de usuario en blanco, por lo que un guardado adicional crea otro usuario nuevo.
Así que o bien:
- ExtJs se supone que resolver fila generada ID de forma automática y sólo estoy haciendo algo mal.
- Se supone que debo volver a cargar manualmente la cuadrícula después de cada guardar con una llamada REST adicional.
He estado consultando la documentación y los foros de EXTJS, pero no estoy seguro del enfoque correcto.
¿Alguien puede aclarar?
EDIT: He intentado devolver Success = True en JSON para que coincida con el SuccessProperty, sin embargo, esto todavía no parece funcionar.
EDIT # 2: Hasta ahora, lo único que he encontrado que funciona es hacer "userDataStore.reload()" después de guardar, sin embargo, porque estaba devolviendo el contenido de la tienda después de guardarlo, esperaba que EXTJS lo entendería y actualizaría los valores de fila.