2010-10-19 6 views
1

Je suis en train d'effectuer des modifications en ligne sur jqgrid. Le client souhaite qu'une boîte de dialogue de confirmation s'affiche pour indiquer que l'utilisateur souhaite réellement enregistrer les modifications effectuées (de la même manière que la suppression fonctionne). En regardant http://github.com/tonytomov/jqGrid/blob/master/js/grid.inlinedit.js j'ai remarqué que la commande editRow prend ces paramètres.Boîte de dialogue de confirmation de modification en ligne JqGrid

table.jqGrid ('EditRow', id, vrai/clés /, fonction () {alert ('1');}/oneditfunc /, fonction () {alert ('1.5'); return false;}/successfunc /, null/url /, null/extraparam /, fonction () {alert ('2'), fonction}/afterSave /, () {alert ('3');}/erreur /, function() {alert ('4');}/afterrestore /);

Lorsque je commence à éditer le oneditfunc est appelé. après la publication au serveur successfunc s'appelle get, puis afterrestore est appelé. Il semble qu'il devrait y avoir un beforeSave ou quelque chose comme ça?

Ces paramètres sont utilisés et envoyés à la fonction saveRow. Il ne semble pas que je puisse injecter une méthode pour interrompre l'envoi des données ou faire apparaître une fenêtre modale pour confirmer les changements effectués.

Est-ce un oubli de ma part ou est-ce une fonctionnalité que je devrai faire dans le jqgrid?

Répondre

1

Une façon de résoudre votre problème consiste à utiliser custom validation editrules. Avant que les données soient envoyées au serveur, elles seront validées. Le seul inconvénient de l'approche est que si l'utilisateur décide de ne pas envoyer les données, le message d'erreur avec le texte que vous produisez le plus sera affiché.

Une autre façon sera l'utilisation de serializeRowData avec le errorfunc (le paramètre du editRow). Généralement, le paramètre serializeRowData de jqGrid sera utilisé pour modifier ou coder les données qui seront envoyées au serveur. Ainsi, si vous affichez une boîte de dialogue de conformation à l'intérieur de la fonction et n'envoyez pas de données ou de données fictives incorrectes au serveur dans le cas, le serveur peut répondre avec l'erreur connue. Puis à l'intérieur de votre errorfunc vous pouvez ignorer cette erreur spéciale. Ainsi, vous pouvez résoudre le problème avec le message d'erreur. Après tout, à cause de l'erreur jqGrid appel "restoreRow" et les données d'origine seront restaurées.

+0

En ce moment j'explore le cellediting car il a un événement beforeSubmitCell. J'essaie toujours de comprendre comment accéder au popup modal par défaut mais je commence à penser que je vais devoir en créer un nouveau pour mon but. Voilà pour la réutilisabilité du code. – Steve

+0

mais cela ne semble pas trop utile car beforeSubmitCell ne peut pas annuler la publication. FRUSTRANT. – Steve

+0

et je veux être en mesure d'annuler le post ne dérange pas le serveur avec des demandes factices. – Steve

Questions connexes