[英]Facing issue in sessionStorage Proxy implementation in Ext JS Grid view
我剛剛創建了一個Sencha小提琴,其中有一個面板,里面有兩個網格視圖。 兩個網格視圖都有助於從左到右選擇項目,反之亦然。 我正在嘗試將所選項目從左側網格視圖顯示為右側網格視圖。 我正在使用sessionStorage代理在從左向右網格視圖移動項目時保存數據。 我必須使用sessionStorage,因為我的要求是在頁面上保留此選擇。
Sencha小提琴鏈接: https : //fiddle.sencha.com/#view/editor&fiddle/2j7u
雖然,我沒有收到任何錯誤,但是我的實現無法正常工作。 甚至控制台日志也顯示正確的選擇數據。 但是我仍然無法填充正確的網格視圖。
我注意到的一件事是,在Applcation-> SessionStorage下的瀏覽器調試器中,我的sessionStorage對象始終為null。 不知道為什么,但是在控制台上它顯示數據。
任何指針將不勝感激!
附帶一提,相同的實現在Ext JS 4.2上運行良好。 但是我在遷移到Ext JS 6.5時遇到問題
謝謝,Dhiraj
進一步的故障排除:
此外,我已經更新了相同的小提琴和成功做出進一步努力,通過注釋掉“suspendEvents”和“resumeEvents”我的右格“存儲” - >商店2和“sessionStore” - > sessionStore2在tropos.selectDevices .addToSelect方法。 與此同時,我發現tropos.selectDevices.updateGridViews方法中的“ store2.loadPage(1)” 行正在加載時清除了我的網格。 我試圖避免使用'clearOnPageLoad'配置設置將存儲設置為false。 但是它沒有用,所以我評論了這一行以使其起作用。 現在,盡管可以正常工作,但是由於sessionStorage仍然無法正常工作,因此仍然無法滿足我對PRESERVING用戶選擇的主要要求。
更新的提琴: https : //fiddle.sencha.com/#view/editor&fiddle/2j7u
謝謝,Dhiraj
在您的addToSelect中嘗試以下代碼:
example.selectDevices.addToSelect = function(storeObj){
var addRecs = [], newRecs = [],
store2 = Ext.getCmp('grid2').getStore();
//********************
//I just comment all *sessionStore2* references because is redundand,
//store2 is the same as sessionStore2
//********************
//sessionStore2 = Ext.data.StoreManager.lookup('currentlySelectedDevices');
//store2.suspendEvents();
//sessionStore2.suspendEvents();
Ext.each(storeObj,function(record){
var rec = record.copy();
rec.phantom = true;
addRecs.push(rec);
newRecs.push(record.data.hid);
});
example.selectDevices.selectedDeviceIds = example.selectDevices.selectedDeviceIds.concat(newRecs);
store2.add(addRecs);
//store2.commitChanges();
for(i=0; i < store2.data.items.length; i++) {
console.log("addToSelect: Selected Device Serial [" + i + "] from STORE_2: " + store2.data.items[i].data.hid);
}
//sessionStore2.add(addRecs);
//for(j=0; j < sessionStore2.data.items.length; j++) {
// console.log("addToSelect: Selected Device Serial [" + j + "] from SESSION_STORAGE_2: " + sessionStore2.data.items[j].data.hid);
//}
//sessionStore2.sync();
store2.sync();
//sessionStore2.resumeEvents();
example.selectDevices.updateGridViews();
};
編輯:您必須將記錄標記為phantom = true,以便同步正常工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.