web-dev-qa-db-fra.com

Kendo Grid annuler l'événement d'édition

J'utilise l'événement edit sur une grille de Kendo pour afficher quelques colonnes cachées. Je les cacherai ensuite à nouveau sur l'événement save.

Le problème que j’ai, c’est qu’il ne semble pas y avoir d’événement pour annuler le mode d’édition, donc la colonne est foutue si l’utilisateur clique sur Annuler.

Existe-t-il un événement non documenté pour annuler ou dois-je rechercher une solution de contournement?

14
Mat

Fondamentalement, il n’existe pas d’événement «Annuler», mais vous pouvez également associer un événement de clic au bouton «Annuler» dans l’événement modifier de la grille. Veuillez vérifier l'exemple ci-dessous:

function onEdit(e) {
   e.container.find(".k-grid-cancel").bind("click", function () {
      //your code here
   })
 }

EDIT: Depuis un certain temps t il a un événement "cancel" qui peut être utilisé à la place de la solution ci-dessus:

19
Vladimir Iliev

Je cherchais une réponse à la même question mais cela n’a pas fonctionné pour moi. J'avais un scénario dans lequel des enregistrements nouveaux et modifiés de ma grille sont validés dans mon contrôleur et des messages d'erreur sont ajoutés à la collection ModelError de ModelState. J'avais connecté l'événement d'erreur de la source de données de la grille, qui avait ensuite affiché le message d'erreur dans une alerte, puis ajouté les éléments suivants qui réinitialisaient les modifications:

$('#MyGrid').data("kendoGrid").cancelChanges();

C'était une solution intéressante pour moi parce que j'utilise la pagination et que la page affichée par l'utilisateur est préservée.

14
MarkSci

Contrairement à ce que dit la réponse acceptée il existe en fait un événement cancel tout comme l'événement edit 

$("#grid").kendoGrid({
    ...
    edit: function(e) {
        alert("edit")
    },
    cancel: function(e) {
        alert("cancel");
    },
    ...
});
9
Spaceman Spiff

Essaye ça,

$("#grid").kendoGrid({
 columns: [
  { field: "name" },
  { field: "age" }
 ],
 dataSource: [
  { name: "Jane Doe", age: 30 },
  { name: "John Doe", age: 33 }
 ],
 dataBound: function(e) {
  $("#grid").on("mousedown", ".k-grid-cancel-changes", function (e) {
    //custom logic
  });
 }
});

Dans dataBound, câblez l'événement à cliquer pour le bouton d'annulation de la barre d'outils de la grille de kendo. Ça va marcher.

0
Joee