2009-11-10 4 views
2

Je dois permettre à l'utilisateur d'ajouter une nouvelle ligne à la grille. L'utilisateur peut également mettre à jour une ou plusieurs lignes.ExtJs ajouter, supprimer, mettre à jour la ligne à la grille

Quelle est la meilleure façon de faire cela?

J'ai tried pour utiliser RESTful Store Example, mais n'a pas été en mesure de gérer l'affichage REST avec php. Lorsque le bouton Ajouter un enregistrement est cliqué, il déclenche le POST deux fois (une fois en cliquant et une fois en appuyant sur la mise à jour).

En outre, les mises à jour sont conservées marquées, même après l'enregistrement sur le db.

Merci.

+0

quel a été le résultat final de cette question? Je suis confronté au même problème et il ne sera même pas déclencher la méthode de mise à jour après la première sauvegarde. – IEnumerator

Répondre

3

Vous devez faire très attention au code dans la démo du Row Editor. Notez qu'ils ont ajouté des écouteurs d'événement aux événements "add", "update" et "remove" qui (dans ce cas) appelaient une fonction du magasin.

Vous ne savez pas d'où provient votre POST (puisque vous n'avez posté aucun code). Fondamentalement, vous définissez un écouteur sur l'événement "mise à jour" de votre magasin. Toutes vos modifications se produisent localement, affectant uniquement votre objet "Magasin" local, jusqu'à ce que vous disiez le contraire. En attachant un écouteur d'événement à l'événement "update" du magasin, vous pouvez le faire gérer POSTing les données sur le serveur, si l'enregistrement a effectivement changé if(record.dirty). Le "Store" reçoit l'événement "update" et le RowEditor reçoit un événement "afteredit". En ce qui concerne les marqueurs de changement, regardez attentivement la méthode commitChanges() de l'objet "Store".

+1

404 sur ce lien –

1

J'ai récemment eu le même problème (les enregistrements étaient toujours sales même si la réponse était propre). Et je pourrais avoir une solution pour vous. Je définissais metaData pour le JsonReader intrabande et ne définissais pas de successProperty, faisant une horrible supposition que cela resterait à la valeur par défaut de "succès". Une fois que j'ai fourni cela, toute la magie a commencé à fonctionner. Ma suggestion pour vous est de passer en revue votre configuration du JsonReader et de vérifier le type de données que vous envoyez. Le lecteur est plutôt pointilleux sur ce qu'il récupère. Vous devez avoir idProperty, root, successProperty, etc tous définis. FWIW, il lance une exception, mais je ne la vois jamais dans la console de Firebug. J'ai dû passer par la tâche ardue de passer en revue le code d'Ext pour trouver ce problème.

1

Le double POST et les enregistrements maintenus sales sont le même problème.

Lorsque quelque chose est modifié dans la grille, la liste des enregistrements modifiés est envoyée au serveur. Vous devez les modifier et les retourner, ces valeurs retournées sont (comparées aux valeurs actuelles dans le magasin?) Et mises à jour dans le magasin et marquées comme non sales. Donc je pense que le problème est dans les valeurs que vous retournez du serveur. Vous devez faire attention aux problèmes suivants: problèmes de format (structure de la réponse, propriété racine, ...), enregistrements répertoriés dans un ordre différent, enregistrements sans ID (ou propriétés d'ID incorrectement définies) et réussite non définie sur vrai.

Questions connexes