今天在用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,會正常獲取選中的行數。