关于dhtmlx.common.js的deleteRow_ex方法的改进
更改前代码:
* 删除选中记录
*/
dhtmlXGridObject.prototype.deleteRow_ex = function(){
var dhxGrid = this;
var deleteIds = dhxGrid.getCheckedRows(0);
if(deleteIds==""){
var deleteIds=dhxGrid.getSelectedRowId();
}
if(deleteIds == "" || deleteIds == null){
dhtmlx.message({text: "请先选择记录"});
return;
}
dhtmlx.confirm_ex("确定删除么?", function(result){
if(result){
$.post(dhxGrid.remoteDeleteUrl, {"deleteIds": deleteIds}, function(json){
if(dhxGrid.useDefaultOnRemoteDeleteFinished == true){
dhxGrid._onRemoteDeleteFinishedDefault(json.deleteIds, json);
}
else if(typeof dhxGrid.useDefaultOnRemoteDeleteFinished == "function"){
dhxGrid.onRemoteDeleteFinished(dhxGrid, json.deleteIds, json);
}
});
}
});
}
var deleteIds = dhxGrid.getCheckedRows(0);
if(deleteIds==""){
var deleteIds=dhxGrid.getSelectedRowId();
}
if(deleteIds == "" || deleteIds == null){
dhtmlx.message({text: "请先选择记录"});
return;
}
dhtmlx.confirm_ex("确定删除么?", function(result){
if(result){
$.post(dhxGrid.remoteDeleteUrl, {"deleteIds": deleteIds}, function(json){
if(dhxGrid.useDefaultOnRemoteDeleteFinished == true){
dhxGrid._onRemoteDeleteFinishedDefault(json.deleteIds, json);
}
else if(typeof dhxGrid.useDefaultOnRemoteDeleteFinished == "function"){
dhxGrid.onRemoteDeleteFinished(dhxGrid, json.deleteIds, json);
}
});
}
});
}
可能导致的错误:当删除表格数据的时候,如果表格中没有checkbox列(type="ch"),下面的代码行会导致deleteIds的值为当前表格的所有的行的Id;
<span style="color:#ff0000">var deleteIds = dhxGrid.getCheckedRows(0);</span>
解决方法:
在该行代码之后添加下列代码:
var colType=dhxGrid.getColType(0);//得到表格的第一列的type
if(colType!="ch"){//若第一列的type!="ch",就说明上面通过getCheckedRows()方法取得的数据为无效数据,
var deleteIds=dhxGrid.getSelectedRowId();//若coltype!="ch",则使用表格的getSelectedRowId()方法取得当前选中行Id复制给deleteIds
}