簡體   English   中英

Ext JS Grid視圖中的會話存儲代理實現中面臨的問題

[英]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。 不知道為什么,但是在控制台上它顯示數據。

小提琴的控制台日志

來自調試器的sessionStorage值

任何指針將不勝感激!

附帶一提,相同的實現在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM