1. 로딩 및 콜백 관련 문제 ExtJs Store는 일반적으로 로딩 시 지연됩니다. 이때 그리드는 먼저 공백으로 표시되며 로딩이 완료될 때까지 데이터가 표시되지 않습니다. 프롬프트 메시지를 추가해야 합니다!
하지만 Store에는 waitMsg 속성이 없습니다.
해결책:
1. 스토어에 리스너를 추가하고 beforeload 이벤트를 수신한 후 로드하기 전에 프롬프트 상자를 팝업하고 로드가 완료된 후 프롬프트 상자를 닫습니다.
2. 콜백은 로딩이 완료된 후 실행되므로 프롬프트 상자 닫기가 완료됩니다.
3. 반드시 콜백 함수를 추가하세요. 프롬프트 상자가 닫혔습니다
예제의 주요 코드는 다음과 같습니다.
varmsgTip; // 사용하기 전에 정의해야 하며 전역 변수로 정의해야 합니다.
var reportStore=new Ext.data.Store({
proxy:reportProxy,
reader: reportReader,
리스너:{
beforeload:function(){
msgTip = Ext .MessageBox.show({
title: 'Prompt',
width: 250,
msg: '페이지 보고서 통계를 새로 고치는 중입니다. 잠시 기다려 주세요...'
}
}
})
reportStore.load({
callback: function(records) , 옵션, 성공){
msgTip.hide(); // 로드가 완료되면 프롬프트 상자를 닫습니다.
}
})
참고: 페이지를 새로 고치기 위해 다시 로드를 호출해야 합니다. 프롬프트 상자를 닫는 콜백 함수도 추가하세요.
reportStore.reload({
callback : function(records, options, Success){
msgTip.hide(); // 로드가 완료되면 프롬프트 상자를 닫습니다.
}
});
---------다음은 기타 매개변수입니다 ------
store.load({
params:{start:0, Limit:20}, //Parameters
// callback은 로딩이 완료되었을 때 실행되는 콜백 함수입니다. 3개의 매개변수가 있습니다. records 매개변수는 가져온 데이터를 나타내고,
// options는 로드 실행 시 전달된 매개변수를 나타냅니다. ()이며 성공은 로드 성공 여부를 나타냅니다.
callback: function(records, options, Success){
Ext.Msg.alert('info', 'Loadingcomplete')
},
scope: store, //Scope는 콜백 함수 실행 시 범위를 지정하는 데 사용됩니다.
add: false // Add가 true인 경우 load()에서 얻은 데이터가 마지막에 추가됩니다. 원본 매장 데이터
// 그렇지 않으면 이전 데이터가 먼저 삭제된 후 얻은 데이터가 매장에 추가됩니다.
} )
2. 한 매장에서 다른 매장으로 특정 조건을 충족하는 레코드를 추가하세요
var MyDocnumStore_Load = function(store){
//var index = 0;
store.each(function(record) {
if(record.data.PlanCarNo ! = '' ) { //column_name을 열 이름으로 바꾸고 '1'을 값으로 바꾸세요
if (record.data.Docnum != _rec.get( 'Docnum')){
var _TmpStr = Record. data.UseDate '---->' Record.data.PlanCarNo
myDocnumStore.add({
'UpDocnum':record.data .Docnum
,'DocnumDesc':_TmpStr
,'UseDate':record.data.UseDate
,'PlanCarNo':record.data.PlanCarNo
})
}
}
})
myDocnumStore.sort(' UseDate', 'ASC');
MyDocnumStore_Load(mystore) //카풀 목록 로드