sench touch對list的store修改後checkbox選中問題

sench touch版本2.4


今天在修改list的一條記錄時,需要重新設置store綁定該list的那條記錄。但在設置記錄時出現不能解決的問題

場景如下:


itemTpl: '<div style="font-size: small;"><input type="checkbox" id="putmaterialcheckbox_{materialId}">'  
		+			'物料編號:{materialCode}    物料名稱:{materialName}<br/>'    
		+			'型號規格:{materialModel}<br/>'    
		+			'已出庫數量:{actualAmount}    暫存庫數量:{tempStoreAmount}'
		+'</div>'  
		+'<div style="font-size: small;color:red" name="putmaterialamount" id="putmateriallist_{materialId}" >'    
		+			'本次入暫存庫數量:{enabelTempStoreAmount}'
		+</div>'


list的內容是用itemtpl設置的,在最前面加了一個checkbox,當觸發itemtap事件時,我需要將checkbox變換狀態,並且同時將checkbox狀態設置到store的該條record中去。


itemtap事件如下

itemtap:function(list,index,target,record){
	var	materialId = record.get('materialId');
	var checkbox=Ext.getDom('putmaterialcheckbox_'+materialId);
	if(checkbox.checked==true){
		checkbox.checked=false;
		record.set('checkboxvalue',false);
	}else{
		checkbox.checked=true;
		record.set('checkboxvalue',true);
	}
}
然而在執行時,checkbox的狀態始終沒有變化,我調試將record.set('checkboxvalue',true);語句去掉,狀態就沒有問題,跟着變化了。那麼問題一定在這個語句中,跟進源碼查詢,終於在list.js裏面發現下面代碼,瞬間就明白了緣由。ext的源碼中list的store記錄被更改時,會同時重新繪製這條記錄的list內容,而首次加載的這條記錄的DOM對象會被更新,而我在記錄更新前獲取的checkbox已經不存在了,因此無論怎麼設置,頁面也不會更新。


解決方案是重新獲取這個checkbox,重新設置狀態,問題解決!

itemtap:function(list,index,target,record){
	
	var	materialId = record.get('materialId');
	var checkbox=Ext.getDom('putmaterialcheckbox_'+materialId);
	if(checkbox.checked==true){
//                    			            					
		record.set('checkboxvalue',false);
		var checkboxNew=Ext.getDom('putmaterialcheckbox_'+materialId);
		checkboxNew.checked=false;
	}else{
//                    			            					
		record.set('checkboxvalue',true);
		var checkboxNew=Ext.getDom('putmaterialcheckbox_'+materialId);
		checkboxNew.checked=true;
	}
},


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章