var IsCheckFlag = true; //標示是不是勾選複選框選中行的,true - 是 , false - 否
$("#dg").datagrid({
rownumbers:true,
url: ‘LeadsData.ashx?o=list‘,
method:‘get‘,
fit: true,
striped:true,
pagination: true,
fitColumns: true,
checkOnSelect: false,
selectOnCheck: true,
pageSize: ,//每頁顯示的記錄條數,默認爲
pageList: [, , ],//能夠設置每頁記錄條數的列表
onLoadSuccess: function (data) {
AddTipForStar();
},
onClickCell: function (rowIndex, field, value) {
IsCheckFlag = false;
},
onSelect: function (rowIndex, rowData) {
if (!IsCheckFlag) {
IsCheckFlag = true;
$("#dg").datagrid("unselectRow", rowIndex);
}
},
onUnselect: function (rowIndex, rowData) {
if (!IsCheckFlag) {
IsCheckFlag = true;
$("#dg").datagrid("selectRow", rowIndex);
}
}
});web
主要代碼就是粗體的部分。url
解決思路爲,用一個標識變量來保存是否點擊了單元格,若是點擊了單元格則此操做不是經過複選框操做的,標識設爲false。在選中和取消選中事件中判斷操做來源,即IsCheckFlag的值。若是爲false,選中操做執行取消選中,取消選中操做執行選中。執行以前默認把標識值設爲默認值,若是是複選框操做,是不觸發 onClickCell 事件的,也就是標識值會是true。spa
須要注意的就是orm
IsCheckFlag = true;事件
$("#dg").datagrid("unselectRow", rowIndex);ip
這兩句的前後順序。get
若是把 IsCheckFlag = true放在下面,會造成相似死循環的狀況。由於 $("#dg").datagrid("unselectRow", rowIndex); 這個事件會直接觸發 onUnselect事件,而 IsCheckFlag = true; 沒有執行。依次執行便會成爲死循環。it