Ext의 CheckboxSelectionModel 기본 선택

2484 단어 prototypeext
설명: 몇 개의 기록을 선택한 후 페이지를 넘기고 다시 뒤집어서 원래의 선택 상태를 유지한다.
원리: 선택하거나 취소할 때 RecordIds로 선택한 Record의 키 id 값을 저장하거나 삭제합니다. 매번store에서 불러오기(load 이벤트)가 끝난 후에store를 훑어보고 모든 Record의 키 열 id가 recordIds에 있는지 비교합니다. 존재하면 임시 변수 records에 Record를 저장하고 마지막으로selMod를 호출합니다.selectRecords(records, true);Array의 remove와contains를 쓰는 방법은 약간java와 비슷하다.util.HashSet(Array에 중복된 값을 저장하지 않음)
function RemoveArray(array,attachId){
    for(var i=0,n=0;i<array.length;i++){
        if(array[i]!=attachId){
            array[n++]=array[i]
        }
    }
    array.length -= 1;
}
function containsArray(array,attachId){
    for(var i=0;i<array.length;i++){
        if(array[i]==attachId){
            return true;
            break;
        }
    }
   return false;
} 
Array.prototype.remove = function (obj) {
    return RemoveArray(this,obj);
}; 
Array.prototype.contains = function (obj) {
    return containsArray(this,obj);
}; 

 
var recordIds=new Array();//  Record id 
var recordsChecked=new Array();//  Record 

var store = new Ext.data.JsonStore({
				url : 'viewXXX.do',
				pruneModifiedRecords : true,
				totalProperty : 'totalProperty',
				root : 'root',
				fields : [{name : 'id'}, 
						  {name : 'status'}
						  ],
				listeners : {
					load : function() {
						var records = new Array();
						store.each(function(record) {
							if (recordIds.contains(record.data.id))
								 records.push(record);
						});
						selMod.selectRecords(records, true);//  load , 
					}
				}
			});
	
	var selMod = new Ext.grid.CheckboxSelectionModel({
		handleMouseDown : Ext.emptyFn,
				listeners : {
					"rowdeselect" : {
						fn : function(e, rowIndex, record) {
							if (recordIds.contains(record.data.id)) {
								recordIds.remove(record.data.id);
								recordsChecked.remove(record);
							}
						}
					},
					"rowselect" : {
						fn : function(e, rowIndex, record) {
							if (!recordIds.contains(record.data.id))
								recordIds.push(record.data.id);
							recordsChecked.push(record);
						}
					}
				}
			});

좋은 웹페이지 즐겨찾기