Kendo UI工具栏和网格 - 从工具栏控件触发时的奇怪保存行为

时间:2014-10-30 14:35:06

标签: kendo-ui

我有一些页面,我有一个kendo ui网格(连接到完整的CRUD服务),但使用单独的Kendo UI工具栏控件(而不是网格本身的工具栏配置)。我在工具栏上有许多不同的按钮/菜单,但在网格上调用saveChanges()时会看到一个奇怪的行为。如果在单击保存按钮时正在编辑单元格,则会保存网格,但编辑的值将丢失(它将恢复到原来的位置)。以下详细介绍了我在不同情况下看到的内容:

  1. 当使用网格中配置的保存按钮(命令:“save”)时,正在编辑的单元格中的任何更改都将通过保存提交。
  2. 当使用调用网格的saveChanges()方法的普通html按钮时,正在编辑的单元格中的任何更改都将通过保存提交。
  3. 使用工具栏控件中配置的保存按钮时,调用saveChanges()时正在编辑的单元格中的更改将丢失。
  4. 以下jsbin显示了所有三种行为:

    http://jsbin.com/jazobexatu/2/edit?html,js,output

    我尝试过多种不同的方式从工具栏按钮调用保存(甚至尝试触发外部按钮的点击事件),但似乎没有什么能够纠正这种行为。我也尝试在网格上调用closeCell()(试图将值强制回数据,但这也不起作用)。我无法调试javascript足以弄清楚有什么不同。我希望有更深入了解这些控件的人可以帮助我。

1 个答案:

答案 0 :(得分:0)

出于某种原因,工具栏按钮上的鼠标按下事件不会导致编辑器出现模糊。

您可以通过单击单元格进行编辑来自己尝试,然后在“正常”按钮上单击并按住鼠标按钮。编辑器在鼠标按下时关闭,导致编辑器模糊,并保持更改。

如果你做同样的事情,单击并按住鼠标,在工具栏按钮上,编辑器保持打开状态。

我一直在寻找源头,但还没弄清楚为什么会发生这种情况。我最好的猜测是工具栏上的mousedown处理程序可以防止事件冒泡或运行默认操作,编辑器也不会模糊。


其他细节:在网格标题按钮和普通按钮上的mousedown上,焦点元素发生变化(导致编辑器模糊的原因)。但是在工具栏按钮的mousedown上,编辑器输入元素仍然具有焦点。

将焦点转移到工具栏的mousedown可能是一种解决方法。


排序奇怪的黑客,但这适用于Chrome(任何支持activeElement的浏览器都应该

click: function (e) {   
    $(document.activeElement).blur();
    $("#grid").data("kendoGrid").saveChanges();  
}