JQGrid setRowData Après modification intégrée
Je vais avoir un problème de mise à jour d'une ligne après la ligne à modifier.
Mon ColModel est:
colModel: [
{ name: 'Email', index: 'Email', editable: true },
{ name: 'ReferenceEmail', index: 'ReferenceEmail', editable: true },
//hidden: true, editable: true, editrules: { edithidden: true}
{ name: 'Title', index: 'Title', editable: true, edittype: "select",
editoptions: { value: "Mr:Mr;Mrs:Mrs;Ms:Ms;Doctor:Doctor;Sir:Sir"} },
{ name: 'Forename', index: 'Forename', editable: true },
{ name: 'Surname', index: 'Surname', editable: true },
{ name: 'Study_Manager', index: 'Study_Manager', editable: true,
edittype: "select", editoptions: { value: "True:True;False:False"} }
]
J'ai l'intention de régler le referenceemail col valeur = la nouvelle rédaction du courriel de la valeur, j'ai donc:
ondblClickRow: function (id, ri, ci) {
lastSelUser = id;
$("#UserGrid").editRow(id, true, false, reload);
}
qui à son tour appelle recharger onsuccess de le modifier,
function reload(result) {
var cell = $("#UserGrid").getCell(lastSelUser, 'Email');
var newEmail = $(cell).val();
$("#UserGrid").saveRow(lastSelUser, false);
$("#UserGrid").setRowData(lastSelUser, { ReferenceEmail: newEmail });
var ref = $("#UserGrid").getCell(lastSelUser, 'ReferenceEmail');
alert($(cell).val());
alert($(ref).val());
}
Maintenant, ma référence de l'e-mail ne marche pas obtenir les mises à jour - l'alerte de la cell value
retourne correctement, mais l'alerte de la ref(referenceemail) value
est pas défini et j'ai vérifié que l'id est en effet correct.
J'ai essayé de mettre le saverow
après la setRowData
, mais qui ne fait pas de différence pour le résultat.
Une fois de plus,
J'apprécie beaucoup tous et toutes aperçu du problème.
Ce qui concerne,
Byron Cobb
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr que j'ai bien compris votre question.
Il me semble, que l'utilisation doit utiliser
aftersavefunc
paramètre deeditRow
au lieu desuccesfunc
(voir http://www.trirand.com/jqgridwiki/doku.php?id=wiki:inline_editing#editrow). L'événementaftersavefunc
sera appelé après les données seront enregistrées dans le jqGrid. L'événementsuccesfunc
ne sera appelée qu'après$.ajax
(pas de données d'un support d'édition) et immédiatement après la demande avant que les données sont enregistrées dans la grille.La
aftersavefunc
reçoit comme paramètresrowid
- id de la ligne modifiée, etres
- réponse du serveur. Donc, si leReferenceEmail
champ peut être défini par le serveur en fonction deEmail
valeur, vous pouvez en utiliser les résultats. Pour définirReferenceEmail
champ, vous pouvez simplement utiliseroù
data
est la nouvelle valeur deReferenceEmail
.Une solution partielle a été trouvé pour quiconque de se demander. Le jqGrid editRow accepte les paramètres suivants:
.setRowData n'a pas l'air de travailler dans le succesfunc, mais il fonctionne dans aftersavefunc, donc mon nouvel appel
$("#UserGrid").editRow(id, true, false, false, false, false, reload);
au lieu de$("#UserGrid").editRow(id, true, false, reload);
De la JQGrid documentation: