easyUI datagrid checkbox 不能提交多选 原因分析。

 原因分析过程如下:

<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">&nbsp&nbsp&nbsp内容</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(opts);
console.log(rows);

加上这两句,发现 idField 是  <table .... idField="kid"> 里定义的,取消这里对比发现,只要没有定义idField,就可以实现我想要的效果了,要么就只有最后选择的 才返回checked: return _557.checkedRows;

收摊!

上一篇:微信小程序-scroll-view隐藏滚动条


下一篇:微信小程序支付步骤