jqWidgets Grid事件问题:限制rowselect触发源及阻止自动rowunselect
解决方案
问题1:让rowselect仅响应鼠标点击,排除代码调用selectrow的情况
jqWidgets通过代码调用selectrow方法触发的rowselect事件,其事件对象不包含鼠标操作相关的原始事件(originalEvent),而鼠标点击触发的事件会携带MouseEvent类型的originalEvent。基于此可以区分两种触发场景:
修改你的rowselect事件绑定代码如下:
$(document).on("rowselect", "#jqxgrid", function (e) { // 过滤掉代码调用selectrow触发的事件 if (!e.originalEvent || !(e.originalEvent instanceof MouseEvent)) { return; } // 这里编写鼠标点击选中行时需要执行的逻辑 });
问题2:阻止非鼠标操作触发的rowunselect
默认选中新行时,之前选中的行会触发rowunselect事件。若需仅在主动通过鼠标取消选中时执行逻辑,同样通过事件来源判断实现:
$(document).on("rowunselect", "#jqxgrid", function (e) { // 过滤掉非鼠标操作触发的取消选中事件 if (!e.originalEvent || !(e.originalEvent instanceof MouseEvent)) { return; } // 这里编写鼠标取消选中行时需要执行的逻辑 });
同时请确保Grid的selectionmode配置为行相关模式,避免因模式错误导致异常触发:
$("#jqxgrid").jqxGrid({ selectionmode: 'singlerow', // 按需选择singlerow/multiplerows // 其他配置项... });
内容的提问来源于stack exchange,提问作者Mert Buyukeryılmaz
相关产品推荐
相关产品推荐

