原因分析过程如下:
<table id="tb" style="" class="easyui-datagrid" toolbar="#tool"
title="学习" selectOnCheck = "false" singleSelect="false" idField="kid">
<thead>
<tr>
<th field="kid" width="0" hidden="true"></th>
<th field="no" width="30" align="center">序号</th>
<th field="content" width="510" editor="text">   内容</th>
</tr>
</thead>
</table>
今天使用easyUI做一个小东西,datagrid定义如上,但是提交数据的时候、 虽然选择了所有的checkbox都打上勾,但是提交到服务器的时候,发现只有最后一个点击的才是真正选择了的,其他的都变成未选。在网上搜罗好久,都没有搜到满意答案、也没有人给个解答,只好慢慢翻easyUI源码了。
翻了几个小时、最终决定从 datagrid 的 getChecked 方法下手:
搜索到如下代码:
getChecked:function(jq){
return _555(jq[0]);
来到这里:
function _555(_556){
var _557=$.data(_556,"datagrid");
var opts=_557.options;
console.log(opts);
if(opts.idField){
return _557.checkedRows;
}else{
var rows=[];
opts.finder.getTr(_556,"","checked").each(function(){
rows.push(opts.finder.getRow(_556,$(this)));
});
console.log(rows);
return rows;
}
};
console.log(rows);
加上这两句,发现 idField 是 <table .... idField="kid"> 里定义的,取消这里对比发现,只要没有定义idField,就可以实现我想要的效果了,要么就只有最后选择的 才返回checked: return _557.checkedRows;
收摊!