一般在使用easyui datagrid时候,我们单击一行时会对本行数据进行选中/取消选中。但是呢在一些特殊的业务场景下呢,要求单击行就是单击行与是否选中无关。对应这样的改动最好不要去改动easyui的源码,毕竟人家默认的这种功能还是很合理的,只是我们的业务上不需要这样的默认功能。
下面就是我通过JS的方法完成了这样的效果,可能开始觉得代码看起来比较绕,建议通过console来打印数据,这样就比较容易理解代码逻辑了。代码贴上
onClickRow: function(index,row){
/*如果当前行数据一开始是选中状态,那么单击行时checkedRows里面不包含当前数据;
如果当前行数据一开始未被选中,那么单击行时checkedRows里面包含当前数据;
*/
var checkedRows = $("#datagrid").datagrid("getChecked");
var checkedFlag = true;//默认就行选中
if(row){
for(var i=0;i<checkedRows.length;i++){
if(row.name == checkedRows[i].name ){//此处可以不是name,可以是其它字段比如id
checkedFlag = false;
break;
}
}
}
/*那么原来是选中的就进行选中,原来不是选中的就不让它选中 */
if(checkedFlag){
$('#datagrid').datagrid('selectRow', index);
} else {
$('#datagrid').datagrid('unselectRow', index);
}
}