ExtJS 4 - mise à Jour/Actualiser un enregistrement unique
J'ai un problème qui m'énerve.
J'ai une grille et quand je double clic sur un élément que je veux ouvrir une fenêtre pour modifier cet élément. Les choses assez standard. Le problème est, je veux être sûr que le dossier est à jour, parce que d'autres personnes en utilisant le programme peut-être modifiée ou même supprimé.
J'ai pu recharger le magasin, mais je veux seulement un enregistrement spécifique à vérifier... j'ai Donc pensé que je pourrais juste aller chercher les données, créez un autre dossier et remplacer celui existant dans le magasin, mais je veux vraiment savoir la meilleure façon pour ce faire
Garder à l'esprit Reposant proxy n'est pas une option pour moi, même si je ne sais pas si l'opération de mise à jour fonctionne dans ce cas ( serveur -> client).
EDIT:
cela peut aider quelqu'un:
je me suis contenté de copier les données et les objets bruts, à partir de l'enregistrement de nouveau à l'ancien, puis "valider" les changements. a travaillé pour moi.
Merci.
OriginalL'auteur Mario Cesar | 2011-06-03
Vous devez vous connecter pour publier un commentaire.
La meilleure façon de faire quelque chose comme ce serait pour recharger le dossier de l'événement qui ouvre la fenêtre. Alors, où vous permettrait par exemple de charger l'enregistrement à partir de la grille de stocker dans un formulaire à l'intérieur de la fenêtre, vous pouvez utiliser votre modèle à la charge de l'id.
Une fois enregistré, vous devriez également d'appel d'actualisation sur l'affichage de la grille, qui retrace les changements de l'enregistrer l'événement. Vous pouvez également utiliser refreshNode (voir affichage de la grille de la documentation) la nature exacte de l'enregistrement dans le magasin, si vous êtes inquiet au sujet de la performance.
Bien sûr, vous n'avez pas à utiliser l'reposant proxy avec cela, vous pouvez utiliser le proxy, aussi longtemps que il va charger l'enregistrement unique.
Si vous êtes désireux de vérifier la fraîcheur sur le serveur, vous devez charger une nouvelle version. Si vous voulez tenir uniquement à la grille du magasin de sauvegarde, au lieu d'utiliser le modèle autonome, vous devrez supprimer l'enregistrement dans le magasin, puis de charge({add: true}) sur la grille du magasin à l'aide d'une url qui vient attrape le document en question.
donc, il n'y a aucun moyen de le recharger... ok, merci, je vais accepter votre réponse car cela m'a aidé sur le "actualisation de la grille". j'avais peur qu'il serait flick ou quelque chose quand je l'ai supprimé et ensuite ajouté (ou vice-versa) les documents en question. je vous remercie.
Cette solution suce, parce que vous êtes en train de créer un autre objet dans la mémoire - et de l'élément dans le magasin sera hors de synchronisation si vous mettez à jour le nouvellement chargée de l'élément.
Salut Simon, en fait, je suis curieux de voir le lien que vous avez fourni ci-dessus, mais il ne fonctionne pas. pouvez-vous poster un nouveau lien s'il vous plaît?
OriginalL'auteur Simon Elliston Ball
ExtJS 4.1
J'ai eu un problème similaire et une expérience essayé
sStore.load({
id: mskey,
addRecords: true
});
où mskey est un uuid d'un cours de chargement record.
Je n'a pas supprimer l'enregistrement existant première (une expérience) et il mis à jour l'enregistrement existant qui avait le même id avec les nouvelles données à partir du serveur (via le modèle --> RESTE de proxy). Parfait!
Je sais que vous avez dit que vous n'êtes pas à l'aide d'un RESTE de proxy, mais cela peut aider d'autres personnes qui ont trouvé ce post à la recherche pour les termes de recherche comme votre nom de rubrique (qui est comment je suis arrivé ici!)
Ainsi, il ressemble 'addRecords" signifie ajouter ou mise à jour.
Pour info,
Murray
OriginalL'auteur Murrah
Avec ExtJS 4.1, voici un remplacement :
En CoffeeScript :
En JS (n'a pas de test) :
data
de la propriété. Mieux utiliserset
méthode à la place.un jeu de marque de l'enregistrement comme "sale", ce qui n'est pas le cas ici.
bien sûr, nous devrions utiliser
suspendEvents
,commit
etresumeEvents
OriginalL'auteur Drasill
J'ai créé un remplacement sur le Poste.les données.Modèle à ajouter une méthode qui peut être utilisée pour mettre à jour les données d'un enregistrement existant (modèle exemple).
C'est comment vous pouvez l'utiliser. C'est en fait assez simple:
En interne, il utilise la méthode de chargement, sur le modèle associé à créer un nouvel enregistrement. Qu'un nouveau record est basé sur le même id que l'original que la reloadData méthode a été appelée sur. Dans le rappel des données de l'enregistrement est appliquée aux données de l'enregistrement d'origine. Pas d'événements déclenchés, ce qui est probablement le chapeau que vous voulez.
C'est Ext 4.2.1. Il y a probablement des dizaines de scénarios que cette solution casse mais on peut toujours affiner pouvez pas nous.
Mise à jour: Cette solution met en œuvre essentiellement le même que celui de @Drasill. Oh bien... celui-ci a été testé.
OriginalL'auteur Christiaan Westerbeek