剑道网格取消编辑事件

Posted

技术标签:

【中文标题】剑道网格取消编辑事件【英文标题】:Kendo Grid cancel edit event 【发布时间】:2013-01-08 02:22:26 【问题描述】:

我在剑道网格上使用edit 事件来显示几个隐藏的列。然后,我将在 save 事件中再次隐藏它们。

我遇到的问题是似乎没有取消编辑模式的事件,所以如果用户单击取消,列就会搞砸。

是否存在未记录的取消事件或者我需要找到解决方法?

【问题讨论】:

【参考方案1】:

基本上没有这样的“取消”事件,但是您可以在网格的еdit 事件中的“取消”按钮上附加点击事件。请查看以下示例:

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

编辑:从某个时间开始,Grid 有“取消”事件,可以使用它来代替上述解决方案:

cancel event

【讨论】:

这几乎对我们有用,但是课程是 .k-grid-cancel-changes 而不是 .k-grid-cancel【参考方案2】:

我一直在寻找相同问题的答案,但这对我不起作用。我有一个场景,在我的控制器中验证我的网格中的新记录和编辑记录,并将错误消息添加到 ModelState 的 ModelError 集合中。我已经连接了网格的数据源错误事件,然后在警报中显示错误消息,然后添加以下内容以重置更改:

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

这对我来说是一个很好的解决方案,因为我正在使用分页并且用户正在查看的当前页面被保留。

【讨论】:

在错误事件中,您也可以只使用 this 关键字来取消更改,即。 this.CancelChanges() 而不是指定整个路径。 是否可以对特定列使用 cancelChanges()? 我注意到 cancelChanges() 正在使我的列表中的所有项目都重复(直到我刷新页面)。当我将正在添加/编辑的特定项目添加到方法中时,这种情况停止发生:cancelChanges(e.model)【参考方案3】:

与接受的答案状态相反实际上有一个 cancel event 就像编辑事件一样。

$("#grid").kendoGrid(
    ...
    edit: function(e) 
        alert("edit")
    ,
    cancel: function(e) 
        alert("cancel");
    ,
    ...
);

【讨论】:

如果您使用“incell”编辑模式,取消事件不会触发。文档说它只触发“内联”或“弹出”编辑模式。【参考方案4】:

试试这个,

$("#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 中,为剑道网格工具栏取消按钮连接单击事件。它会起作用的。

【讨论】:

以上是关于剑道网格取消编辑事件的主要内容,如果未能解决你的问题,请参考以下文章

剑道 UI 网格批量编辑需要显示布尔值 true(复选框需要选中) false(复选框需要取消选中)

剑道网格相当于 onEditComplete

刷新后剑道网格单元重新聚焦

单击取消后,Kendo网格弹出编辑器不再打开

防止在剑道网格中编辑一行?

剑道网格 - 如何在添加/编辑子行时访问父行模型(详细网格)