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

Kendo ui 剑道UI工具栏和网格-从工具栏控件触发时的奇怪保存行为,kendo-ui,Kendo Ui,我有一些页面有剑道ui网格(连接到完整的CRUD服务),但使用单独的剑道ui工具栏控件(与网格中的工具栏配置相反)。我在工具栏上有许多不同的按钮/菜单,但在网格上调用saveChanges()时,我看到一种奇怪的行为。如果单击“保存”按钮时正在编辑单元格,则网格将被保存,但编辑的值将丢失(它将恢复到原来的位置)。以下是我在不同情况下看到的详细信息: 使用网格中配置的保存按钮(命令:“保存”)时,正在编辑的单元格中的任何更改都会通过保存提交 当使用调用网格的saveChanges()方法的普通ht

我有一些页面有剑道ui网格(连接到完整的CRUD服务),但使用单独的剑道ui工具栏控件(与网格中的工具栏配置相反)。我在工具栏上有许多不同的按钮/菜单,但在网格上调用saveChanges()时,我看到一种奇怪的行为。如果单击“保存”按钮时正在编辑单元格,则网格将被保存,但编辑的值将丢失(它将恢复到原来的位置)。以下是我在不同情况下看到的详细信息:

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


    我尝试过用多种不同的方式调用工具栏上的save按钮(甚至尝试触发外部按钮的click事件),但似乎没有任何方法可以纠正这种行为。我还尝试在网格上调用closeCell()(试图将值强制返回到数据中,但这也不起作用)。我还没有能够调试足够的javascript来找出不同之处。我希望对这些控件有深入了解的人能帮助我。

    出于某种原因,工具栏按钮上的鼠标按下事件不会在编辑器上造成模糊

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

    如果您执行相同的操作,请单击并按住鼠标,在工具栏按钮上,编辑器将保持打开状态

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


    附加细节:在网格标题按钮和普通按钮上鼠标向下移动时,聚焦元素会发生变化(这就是导致编辑器模糊的原因)。但在工具栏按钮的鼠标向下移动时,编辑器输入元素仍然具有焦点

    将焦点从工具栏的鼠标向下移动可能是一种解决方法


    有点奇怪,但这在Chrome上是可行的(任何浏览器都应该支持
    activeElement

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

    太棒了。我一直在寻找这样一个黑客-只是不知道如何让它发生自己。谢谢!