浏览器:IE 9
上下文:填充了可编辑,可排序(服务器端)的KendoUI网格 .
问题:目标是在有任何未保存的更改时弹出消息 .
用户点击一个单元格
用户编辑单元格中的文本
用户点击列 Headers
网格的数据源不会捕获编辑 . 数据项的脏属性为false . Kendo UI网格始终对列进行排序 . 我一直无法找到拦截排序事件的方法并警告用户并取消排序事件 .
任何帮助表示赞赏 .
版本:kendoui.aspnetmvc.2013.2.716
要取消排序事件,请在数据源的requestStart事件中调用event.preventDefault() .
数据源的hasChanges()方法返回false if
网格列可重新排序 . (.Reorderable(r => r.Columns(true))// Kendo htmlhelper code)
在服务器上完成排序
用户编辑单元格中的文本,然后单击列 Headers
如果删除可重新排序设置,则datasource的hasChanges()方法返回true . 打开此问题的支持服务单 .
与此同时,如果您希望在用户编辑单元格并单击列 Headers 时使用hasChanges()方法捕获编辑,请不要将Reorderable设置为true .
这是一段展示KendoUI Grid issue的视频
来自Telerik的回复
基本上这种情况正在发生,因为重新排序使用的事件是mousedown事件 . 触发mousedown事件时,模型仍未更新 .
作为解决方案,我可以建议您以下解决方案:
在初始化Grid之后将其放在脚本块中 . 这样,如果网格仍处于编辑模式,无论您是否进行了更改,都将阻止拖动 .
$(function () { var gr = $('#Grid').data().kendoGrid; gr.thead.on('mousedown', function (e) { if (gr.tbody.find('.k-edit-cell').length) { e.stopImmediatePropagation() } }); })
2 回答
版本:kendoui.aspnetmvc.2013.2.716
要取消排序事件,请在数据源的requestStart事件中调用event.preventDefault() .
数据源的hasChanges()方法返回false if
网格列可重新排序 . (.Reorderable(r => r.Columns(true))// Kendo htmlhelper code)
在服务器上完成排序
用户编辑单元格中的文本,然后单击列 Headers
如果删除可重新排序设置,则datasource的hasChanges()方法返回true . 打开此问题的支持服务单 .
与此同时,如果您希望在用户编辑单元格并单击列 Headers 时使用hasChanges()方法捕获编辑,请不要将Reorderable设置为true .
这是一段展示KendoUI Grid issue的视频
来自Telerik的回复
基本上这种情况正在发生,因为重新排序使用的事件是mousedown事件 . 触发mousedown事件时,模型仍未更新 .
作为解决方案,我可以建议您以下解决方案:
在初始化Grid之后将其放在脚本块中 . 这样,如果网格仍处于编辑模式,无论您是否进行了更改,都将阻止拖动 .