easyui的datagrid的設置背景色以後,行默認的選中的背景色無效的修正

上次關於的這個問題的處理通常是沒有問題,可是若是對於重複調用datagrid的selectRow和clearSelections事件,會形成顏色的混亂,由於在每次調用onSelect函數的時候,都首先會調用 onUnselectAll函數,並且調用clearSelections方法的時候,也會調用onUnselectAll函數,後面花了些時間找到這個解決辦法:css

定義全局變量,用來存儲當前被選中行,上次被選中和顏色的一個對象,該對象的key爲行的ID值,value值爲顏色的值函數

var selectRowIndexColor = {};//用來保存行的背景色(由於表格中可能有多個背景色)
var selectRowIndex = undefined;//保存當前正在選中的行的索引
var prevSelectRow = undefined;//用來保存上次被選中的行

datagrid的選中行事件:code

onSelect:function(rowData){
   if(rowData){
   		var rowIndex = rowData.id;//這裏使用的是treegrid,treegrid和datagrid的不一樣只是用id值替換了datagrid的索引index
   		selectRowIndex = rowIndex;
   		//獲取被選中行的背景色(等下取消選擇的時候須要還原爲這個背景色,因此這裏先記錄下來),在treegrid中使用rowData.id代替了rowIndex的做用
   		var color = $("#datagrid-row-r1-2-"+rowIndex).css("background-color");
   		//datagrid的行選中默認顏色rgb(255, 228, 141)
   		if(color != 'rgb(255, 228, 141)'){
   			//若是設置了自定義背景色,才須要改變(若是沒有設置自定義背景色,datagrid會使用默認的選中行的背景色)
   			selectRowIndexColor[selectRowIndex] = color;
//       			$("#datagrid-row-r1-1-"+rowIndex).css("background-color","#FFE48D").css("color","black");//背景改成選中
   			$("#datagrid-row-r1-2-"+rowIndex).css("background-color","#FFE48D").css("color","black");//背景改成選中
   		};
        //若是上次被選中的行存在,並且上次被選中的行不是當前被選中的行(針對非鼠標單擊,而調用的select選中行事件)
   		if(prevSelectRow && prevSelectRow.id != selectRowIndex){
   			var color = selectRowIndexColor[prevSelectRow.id];
   			if(color){
   				//若是設置了自定義背景色,才須要恢復原來的自定義背景色
//     			   		$("#datagrid-row-r1-1-"+selectRowIndex).css("background-color",color).css("color","black");//背景恢復原來顏色
   				$("#datagrid-row-r1-2-"+prevSelectRow.id).css("background-color",color).css("color","black");//背景恢復原來顏色
       			};
       		};
       		prevSelectRow = rowData;
   		};
   },

而對於原來的onUnselectAll函數,則什麼都不須要作:對象

onUnselectAll:function(rows){
},