我有一些页面,我有一个kendo ui网格(连接到完整的CRUD服务),但使用单独的Kendo UI工具栏控件(而不是网格本身的工具栏配置)。我在工具栏上有许多不同的按钮/菜单,但在网格上调用saveChanges()时会看到一个奇怪的行为。如果在单击保存按钮时正在编辑单元格,则会保存网格,但编辑的值将丢失(它将恢复到原来的位置)。以下详细介绍了我在不同情况下看到的内容:
以下jsbin显示了所有三种行为:
http://jsbin.com/jazobexatu/2/edit?html,js,output
我尝试过多种不同的方式从工具栏按钮调用保存(甚至尝试触发外部按钮的点击事件),但似乎没有什么能够纠正这种行为。我也尝试在网格上调用closeCell()(试图将值强制回数据,但这也不起作用)。我无法调试javascript足以弄清楚有什么不同。我希望有更深入了解这些控件的人可以帮助我。
答案 0 :(得分:0)
出于某种原因,工具栏按钮上的鼠标按下事件不会导致编辑器出现模糊。
您可以通过单击单元格进行编辑来自己尝试,然后在“正常”按钮上单击并按住鼠标按钮。编辑器在鼠标按下时关闭,导致编辑器模糊,并保持更改。
如果你做同样的事情,单击并按住鼠标,在工具栏按钮上,编辑器保持打开状态。
我一直在寻找源头,但还没弄清楚为什么会发生这种情况。我最好的猜测是工具栏上的mousedown处理程序可以防止事件冒泡或运行默认操作,编辑器也不会模糊。
其他细节:在网格标题按钮和普通按钮上的mousedown上,焦点元素发生变化(导致编辑器模糊的原因)。但是在工具栏按钮的mousedown上,编辑器输入元素仍然具有焦点。
将焦点转移到工具栏的mousedown可能是一种解决方法。
排序奇怪的黑客,但这适用于Chrome(任何支持activeElement
的浏览器都应该
click: function (e) {
$(document.activeElement).blur();
$("#grid").data("kendoGrid").saveChanges();
}