web-dev-qa-db-ja.com

剣道グリッドのキャンセル編集イベント

剣道グリッドでeditイベントを使用して、いくつかの非表示の列を表示しています。その後、saveイベントで再び非表示にします。

私が抱えている問題は、編集モードをキャンセルするイベントがないように見えるので、ユーザーがキャンセルをクリックすると、列がめちゃくちゃになることです。

キャンセルのための文書化されていないイベントはありますか、または回避策を見つける必要がありますか?

17
Mat

基本的に、そのような「キャンセル」イベントはありませんが、グリッドの еdit イベントの「キャンセル」ボタンにクリックイベントをアタッチできます。以下の例を確認してください:

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

編集:ある時点からグリッドには「キャンセル」イベントがあります上記のソリューションの代わりに使用できます:

20
Vladimir Iliev

同じ質問への回答を探していましたが、うまくいきませんでした。グリッド内の新規および編集済みレコードがコントローラー内で検証され、エラーメッセージがModelStateのModelErrorコレクションに追加されるシナリオがありました。グリッドのデータソースエラーイベントをフックしてアラート内にエラーメッセージを表示し、次のコードを追加して変更をリセットしました。

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

私はページングを使用していて、ユーザーが表示している現在のページが保持されているので、それは私にとって素晴らしい解決策でした。

16
MarkSci

受け入れられた回答が述べていることに反する 実際には、編集イベントと同様に イベントをキャンセル があります。

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

これを試して、

$("#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
  });
 }
});

DataBoundで、剣道グリッドのツールバーのキャンセルボタンのワイヤクリックイベント。それが動作します。

0
Joee