今天在用datagrid时偶然发现一个问题,问题如下:
在使用 var rows = $("#datagride").datagrid(‘getSelections’)的时候,获取选中的行数,在前台页面无论选中几行,获取rows.length的结果均为1,于是查看了一下easyui中jquery.easyui.min.js中的源码。源码如下:
function _4bb(_4bc){
var opts=$.data(_4bc,“datagrid”).options;
var data=$.data(_4bc,“datagrid”).data;
if(opts.idField){
return $.data(_4bc,“datagrid”).selectedRows;
}else{
var rows=[];
opts.finder.getTr(_4bc,"",“selected”,2).each(function(){
var _4bd=parseInt($(this).attr(“datagrid-row-index”));
rows.push(data.rows[_4bd]);
});
return rows;
}
};
错误原因是:我设置了idField属性,但是没有给唯一性字段设置唯一值,导致获取的值一直为1。解决方法:
idField =“” 将该属性置空即可 。
最后终结发现:如果在datagrid中设置了idField:‘id’时,在返回数据的时候要有id字段,并且id要唯一;如果不设置idField,会正常获取选中的行数。