9
votes

Kendo Grid: Annuler Modifier Supprimer une nouvelle ligne

Voici un Demo à pour le comportement que j'exprime.

Si vous modifiez la ligne existante avec ID 1, modifiez le texte en quelque chose d'autre, puis appuyez sur la touche Annuler, la ligne est correctement rétablie à son état précédent.

Afin de reproduire mon problème, vous devez:

  • Ajouter une nouvelle ligne
  • Appuyez sur le bouton de mise à jour pour l'enregistrer.
  • Sélectionnez la ligne à nouveau et appuyez sur le bouton de mise à jour.
  • Appuyez sur le bouton Annuler
  • La ligne disparaît!

    Même s'il existe des questions similaires à ce problème, je n'ai pas encore trouvé de réponse satisfaisante.

    Certaines personnes disent que j'ai besoin de définir un identifiant. Comme vous pouvez le voir de ma démo, cela ne fait aucune différence, la nouvelle ligne a une pièce d'identité et elle disparaît toujours.

    Il y a quelques suggestions lorsque vous utilisez une source de données distante, mais cela ne fonctionne pas dans mon cas, je dois utiliser des données locales.

    Enfin, il y a Cette répond. Bien que cela empêche la nouvelle ligne de disparaître, l'annulation de la ligne ne revienne pas les données à son ancien état, elle ferme uniquement l'éditeur et les données sont telles qu'après la modification.


5 commentaires

Cela ressemble à un bug, non? L'avez-vous signalé?


Oui. Mais comme je ne suis pas aussi expérimenté avec Kendo, je suppose toujours que j'ai fait quelque chose de mal :-) Bien sûr, si personne ne pointe une erreur dans mon code, je le signalerai comme un bug


Vous pouvez essayer avec une variable locale pour stocker de nouvelles valeurs et revenir à l'ancienne valeurs lorsque l'utilisateur clique sur Annuler (comme indiqué dans ma réponse).


Avez-vous essayé la solution que j'ai fournie?


Désolé mais je n'ai pas essayé votre solution, et ça fait des années depuis que j'ai utilisé la dernière fois Kendo UI


5 Réponses :


3
votes

Cela se produit car l'identifiant reste défini sur sa valeur par défaut. La source de données considère que ces éléments de données sont "nouveaux" et les annulant les supprime. Une fois que vous avez enregistré un "nouveau" élément, vous devez définir son ID sur une valeur non par défaut.


1 commentaires

Je fixe la valeur de l'ID, la colonne est modifiable. Et même si je ne le faisais pas, je ne comprends pas pourquoi l'annulation de l'édition de nouveaux articles devrait les supprimer, cela n'a aucun sens pour moi.



3
votes

J'ai modifié vos modifications avec ce CLUCKR , et il semble fonctionner. Le seul changement que j'ai fait était de renommer la colonne «ID» à «Idé».

D'une manière ou d'une autre, le nom de la colonne "ID", comme indiqué dans les exemples de Kendo ne fonctionne pas, et cela ressemble à un bug. xxx


0 commentaires

7
votes

Cela semble être un bug uniquement. Mais vous pouvez toujours obtenir la sortie souhaitée à travers le code ci-dessous.

  1. J'ai introduit une nouvelle variable Tempsavédrecords forte> et mise à jour cette variable lorsque vous êtes sauvegardez ou supprimez l'enregistrement avec Kendo Datasource Data. STRUT> LI>
  2. Lorsque l'utilisateur clique sur le bouton Annuler Remplissez le Kendo DataSource avec TempsaveDrecords. strong> P>

    <!DOCTYPE html>
    <html>
    <head>
        <title>Test</title>
        <link rel="stylesheet" href="http://cdn.kendostatic.com/2014.1.318/styles/kendo.common.min.css" />
        <link rel="stylesheet" href="http://cdn.kendostatic.com/2014.1.318/styles/kendo.default.min.css" />
        <link rel="stylesheet" href="style.css">
    </head>
    <body>
        <div id="grid"></div>
        <script src="http://cdn.kendostatic.com/2014.1.318/js/jquery.min.js"></script>
        <script src="http://cdn.kendostatic.com/2014.1.318/js/kendo.all.min.js"></script>
        <script src="script.js"></script>
    </body>
    </html>


1 commentaires

Cela fonctionne réellement parfaite. Pour tous les futurs lecteurs -> Très important <- Assurez-vous d'inclure son code pour supprimer l'événement. sinon ur pour un autre bug.



13
votes

avait le même problème. Je l'avais résolu en appelant simplement la méthode CancelChanges () de la DataSource: xxx


1 commentaires

Votre solution fonctionnera si nous ne mettrons pas à jour le disque. Si nous mettons à jour l'enregistrement, il créera de nouveaux enregistrements car il n'y a pas de moyen unique de renvoyer la ligne. Cochez cette case PLNKR.CO/EDIT/TXCRIJSJOAYQCP5IPMTIO?p=preview



0
votes

Je pourrais résoudre ce problème en redémarrant l'objet de données après ajout de nouvelle ligne.

Par exemple: xxx

en appelant la méthode des données () Grille que les nouvelles données asignées sont les données de base et les nouvelles lignes ne sont plus nouvelles.

J'espère que cela vous aidera.


0 commentaires