Easyui datagrid formatter 删除行失败解决
Easyui datagrid formatter 删除行失败解决
问题现象
使用formatter 为每行新增一个删除操作,,删除第一个行的时候没问题,如果存在多行的时候,当删除行时,提示错误
问题原因
因为是使用
formatter
相当于每行在渲染的时候index
已经固定了,因此我在删除的时候就会出现index错误
解决方案
1、使用
checkbox
选择框进行删除(非行编辑);
2、在每次删除之后重新的渲染formatter
使得index更新
由于需求要求按行删除,因此选择方案2
错误代码
function formatOpt(value, row, index){
return '<a href="javascript:void(0)" οnclick="deleteRow('+index+')"><font color="blue" style="text-decoration:underline">删除</font></a> '
}
/*删除行*/
function deleteRow(index){
$('#addTable').datagrid.('deleteRow',index)
}
修改后代码
function formatOpt(value, row, index){
return '<a href="javascript:void(0)" οnclick="deleteRow('+index+')"><font color="blue" style="text-decoration:underline">删除</font></a> '
}
/*删除行*/
function deleteRow(index){
console.log('index',index)
let dg = $('#addTable');
// 从数据源中删除该行数据
let dataSource = dg.datagrid('getData');
dataSource.rows.splice(index, 1);
dg.datagrid('loadData', dataSource);
// 重新设置formatter相关逻辑,更新索引
dg.datagrid('getColumnOption', 'id').formatter = function(value, row, index){
return '<a href="javascript:void(0)" οnclick="deleteRow('+index+')"><font color="blue" style="text-decoration:underline">删除</font></a> ';
};
}
如果每次删除之后和服务器交互刷新datagrid也可以解决此问题;
原文地址:https://blog.csdn.net/weixin_43159039/article/details/144052643
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!