EXTJS + mise à Jour d'un magasin avec l'ID de base de données après la sauvegarde d'une grille

Je suis en train d'apprendre à utiliser le EXTJS grilles pour quelques simples opérations CRUD sur une table dans un admin app.

J'ai une simple grille qui permet à quelqu'un de modifier des utilisateurs, le magasin est défini comme:

        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
            })
        });

Cela est lié à une grille, et je suis capable de charger et d'enregistrer des utilisateurs sans problème. Le bouton enregistrer ressemble à ceci:

   var saveButton = new Ext.Button({
            text: 'Save',
            disabled: true,
            handler: function() {
                userDataStore.save();                    
                pageState.ClearDirty();
                saveButton.disable();
            }
        });

Cependant, lors de la création d'un nouvel utilisateur, le JSON POSTE de l'utilisateur est publié dans le même service REST point de fin en tant que "mise à Jour", avec la seule différence étant qu'aucune valeur de l'ID est affiché (car on est seulement ensemble dans le magasin lors du chargement à partir du serveur).

Cela fonctionne, et je suis capable de créer des utilisateurs.

Le sauver service REST émet retour à la création de la ligne avec le nouvel ID de base de données, et j'ai été sous l'hypothèse que EXTJS serait automatiquement liez la nouvelle base de données générées à l'ID de la ligne. Cela permet à l'utilisateur de continuer à modifier cette ligne, et entraîner une mise à jour au lieu d'un insert.

Au lieu de cela, la ligne continue à avoir un vide de l'ID d'utilisateur, de sorte qu'un jet supplémentaire crée un autre utilisateur.

Donc, soit:

  • EXTJS est censé résoudre généré ID de ligne est automatiquement et je suis tout à fait quelque chose de mal.
  • Je suis censé recharger manuellement la grille après chaque enregistrement avec un REPOS supplémentaire d'appel.

J'ai été à la recherche à EXTJS la documentation et les forums, mais je suis dans le flou sur la bonne approche.

Quelqu'un peut-il préciser?

EDIT: j'ai essayé de retourner avec Succès = True en JSON pour correspondre à la SuccessProperty, cependant cela ne semble pas fonctionner.

EDIT #2: jusqu'à présent, la seule chose que j'ai trouvé qui fonctionne est en train de faire "userDataStore.reload()" après l'enregistrement, mais parce que j'étais de retour le contenu de la boutique en arrière après l'enregistrement, j'espérais que EXTJS de mieux en saisir et mettre à jour les valeurs de ligne.

OriginalL'auteur FlySwat | 2010-09-14