这个错误是 easyUI源码的bug,纠结了好多天,尝试了好多方法最后终于解决了,再次分享一下
easyui是根据datagrid-row-index和datagrid-row-r1-x-x来定位行的。
但在deleteRow方法中,删掉当前行后,作者只把当前行后面的行的datagrid-row-index更新了。也就是往前提1,弥补被删除行的空缺,但对datagrid-row-r1-x-x却没做任何改动。
这样就会造成下次执行 opts.finder.getTr的时候,获得的row错误,不是自己点击的row。
解决方法:
在jquery.easyui.min.js 里找到deleteRow方法,
改之后的方法为:
deleteRow: function(target, index) { var opts = $.data(target, "datagrid").options; var data = $.data(target, "datagrid").data; opts.finder.getTr(target, index).remove(); var gd = $.data(target, "datagrid"); for (var i = index + 1; i < data.rows.length; i++) { opts.finder.getTr(target, i, "body", 2).attr("datagrid-row-index", i - 1) .attr("id",gd.rowIdPrefix+"-2-"+(i-1)); var tr1 = opts.finder.getTr(target, i, "body", 1).attr("datagrid-row-index", i - 1) .attr("id",gd.rowIdPrefix+"-1-"+(i-1)); if (opts.rownumbers) { tr1.find("div.datagrid-cell-rownumber").html(i); } } data.total -= 1; data.rows.splice(index, 1); }
直接复制粘贴就可以了
相关推荐
easyui datagrid表格打印,支持formatter格式化数据的打印,还原的最初datagrid 的表格数据
两种方法将easyui datagrid 中的数据导出到Excel中,均以验证可以正常使用
easyui datagrid 删除多行操作时会出现异常,该方法可以直接加载一次数据,避免该问题的发生
easyui datagrid中实现上下左右、回车切换单元格easyui datagrid中实现上下左右、回车切换单元格easyui datagrid中实现上下左右、回车切换单元格
easyUI datagrid 行上移,下移,置顶,置底的方法
easyui datagrid editor回车切换单元格示例,适合熟悉easyui但又不懂如何做的人员,可能参考一下源码JS。
JS EasyUI DataGrid动态加载数据
EasyUI DataGrid过滤用法实例
jquery easyui 扩展 datagrid 自定义动态隐藏显示列
easyui datagrid 多条件筛选 可复选 过滤 例如过滤200-300 500-600 类似淘宝筛选 但允许复选
jquery easyui demo 网页下载下来打包了,还有datagrid简要说明
easyUI datagrid 自动调整行号大小
easyUI拓展:获取当前datagrid中在编辑状态的行编号列表,直接使用即可
jQuery EasyUI Datagrid 用户列表鼠标悬停/离开数据行时显示人员头像(onMouseOver/onMouseOut) Demo 扩展 jQuery EasyUI Datagrid 数据行鼠标悬停离开事件,源码奉献!!!
解决EasyUIdataGrid列比较多,无数据,列展现不全
在easyui 的datagrid编辑状态下实时更新其他处于编辑或者没在编辑下的列值,并在结束编辑后得到的row的数据为更改后的数据。
在easy ui datagrid 列表基础上实现行过滤[行模糊查询],注:数据库远程查询
easyui datagrid 嵌套datagrid form 简单提交 ,刷新子表数据
在Easyui的1.3.3版本中,作者新增了tooltip组件,尽管样式看起来也...之前我写过一篇《扩展:datagrid鼠标经过提示单元格内容》那就是用纯编码生成的tip,更为丑陋,有了Easyui 1.3.3的tooltip,我们实现起来就很容易了