首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ext网格视图中sessionStorage代理实现面临的问题

Ext网格视图中sessionStorage代理实现面临的问题
EN

Stack Overflow用户
提问于 2018-07-13 02:13:22
回答 1查看 207关注 0票数 0

我刚刚创建了一个Sencha小提琴,其中我有一个面板和两个网格视图在其中。两个Grid视图都方便从左到右的项选择,反之亦然。我正在尝试显示从左网格视图到右网格视图所选的项。我使用sessionStorage代理来保存数据,同时将项目从左向右移动到网格视图。我必须使用sessionStorage,因为我的要求是在整个页面中持久化这个选择。

森查小提琴链接:https://fiddle.sencha.com/#view/editor&fiddle/2j7u

虽然,我没有收到任何错误,但我的实现不起作用。甚至控制台日志也显示正确的选择数据。但我仍然无法填充正确的网格视图。

我注意到的一件事是,在应用程序-> SessionStorage下的浏览器调试器中,我的sessionStorage对象总是为null。不知道为什么,但在控制台上显示数据。

小提琴控制台日志

调试器的sessionStorage值

任何指点都是非常感谢的!

另外,在ExtJS4.2中,同样的实现也很好。但我在迁移到ExtJS6.5时遇到了问题

谢谢,Dhiraj

进一步故障排除:

此外,我更新了同样的小提琴,并成功地使它进一步工作,在resumeEvents和'resumeEvents‘为我的右网格’商店‘-> store2和'sessionStore’-> sessionStore2在tropos.selectDevices.addToSelect方法。同时,我发现tropos.selectDevices.updateGridViews方法中的“store2.loadPage(1)”行在加载时清除了我的网格。我试图避免使用“clearOnPageLoad”配置设置将商店设置为false。但它不起作用,所以我评论了这句话,让它发挥作用。现在,虽然它可以工作,但我保持用户选择的主要要求仍然没有得到满足,因为sessionStorage仍然不起作用。

更新小提琴:https://fiddle.sencha.com/#view/editor&fiddle/2j7u

谢谢,Dhiraj

EN

回答 1

Stack Overflow用户

发布于 2018-07-13 17:38:10

在您的addToSelect中尝试以下代码:

代码语言:javascript
复制
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();
};

编辑:您必须将记录标记为幻影=真,这样同步才能正常工作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51316780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档